Contrôle de la validation des certificats X.509 par le gestionnaire de relations de confiance
Le rôle du gestionnaire de relations de confiance est de valider le certificat SSL (Secure Sockets Layer) envoyé par l'homologue, ce qui inclut la vérification de la signature et de la date d'expiration du certificat. Un gestionnaire d'accréditation JSSE (Java™ Secure Socket Extension) détermine si l'homologue éloigné peut être considéré comme étant digne de confiance au cours de l'établissement d'une liaison SSL.
WebSphere Application Server peut appeler plusieurs gestionnaires d'accréditation au cours d'une connexion SSL. Le gestionnaire de relations de confiance par défaut procède à la validation standard du certificat ; les plug-ins du gestionnaire de relations de confiance personnalisé effectue une validation personnalisée, telle que la vérification du nom d'hôte. Pour plus d'informations, voir Exemple: Développement d'un gestionnaire de sécurité personnalisé pour des décisions de sécurité SSL personnalisées
Lorsqu'un gestionnaire de relations de confiance est configuré dans une configuration SSL côté serveur, le serveur appelle la méthode isClientTrusted. Lorsqu'il est configuré dans une configuration SSL côté client, le client appelle la méthode isServerTrusted. La chaîne de certificats homologues est transmise à ces méthodes. Si le gestionnaire de relations de confiance considère que les informations homologues ne sont pas dignes de confiance, il peut générer une exception afin de forcer l'échec de l'établissement de liaison.
WebSphere Application Server peut également fournir l'interface com.ibm.wsspi.ssl.TrustManagerExtendedInfo afin que des informations supplémentaires puissent être transmises au gestionnaire d'accréditation. Pour plus d'informations, voir l'interface com.ibm.wsspi.ssl.TrustManagerExtendedInfo.
Gestionnaire de relations de confiance IbmX509 par défaut
<trustManagers xmi:id="TrustManager_1132357815717" name="IbmX509" provider="IBMJSSE2"
algorithm="IbmX509" managementScope="ManagementScope_1132357815717"/>
Le gestionnaire de relations de confiance fournit un certificat de signataire pour vérifier le certificat homologue envoyé au cours de l'établissement de liaison. Les signataires ajoutés au magasin de relations de confiance pour la configuration SSL doivent être dignes de confiance. Si ce n'est pas le cas ou si vous ne souhaitez pas autoriser les autres à se connecter à vos serveurs, envisagez de supprimer les certificats racine par défaut des autorités de certification. Vous pouvez également
supprimer tout certificat dont vous ne pouvez pas vérifier l'origine.Gestionnaire de relations de confiance IbmPKIX par défaut
Vous pouvez utiliser le gestionnaire de relations de confiance IbmPKIX par défaut à la place du gestionnaire de relations de confiance IbmX509, présenté dans l'exemple de code suivant :<trustManagers xmi:id="TrustManager_1132357815719" name="IbmPKIX" provider="IBMJSSE2"
algorithm="IbmPKIX" trustManagerClass="" managementScope="ManagementScope_1132357815717">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815717"
name="com.ibm.security.enableCRLDP" value="true" type="boolean"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815718"
name="com.ibm.jsse2.checkRevocation" value="true" type="boolean"/>
</trustManagers>
<trustManagers xmi:id="TrustManager_managementNode_2" name="IbmPKIX" provider=
"IBMJSSE2" algorithm="IbmPKIX" trustManagerClass=""
managementScope="ManagementScope_managementNode_1">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1" name="com.ibm.se
curity.enableCRLDP" value="false" type="boolean" displayNameKey="" nlsRangeKey="
" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_2" name="com.ibm.js
se2.checkRevocation" value="false" type="boolean" displayNameKey="" nlsRangeKey=
"" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_3" name="ocsp.enabl
e" value="false" type="String" displayNameKey="" nlsRangeKey="" hoverHelpKey=""
range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_4" name="ocsp.respo
nderURL" value="http://ocsp.example.net:80" type="String" displayNameKey=""
nlsRangeKey="" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_5" name="ocsp.respo
nderCertSubjectName" value="" type="String" displayNameKey="" nlsRangeKey="" hov
erHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_6" name="ocsp.respo
nderCertIssuerName" value="" type="String" displayNameKey="" nlsRangeKey="" hove
rHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_7" name="ocsp.respo
nderCertSerialNumber" value="" type="String" displayNameKey="" nlsRangeKey="" ho
verHelpKey="" range="" inclusive="false" firstClass="false"/>
</trustManagers>
Pour plus d'informations sur l'utilisation du gestionnaire d'accréditation par défaut IbmPKIX, voir Exemple : Activation de la vérification des révocations de certificat avec le gestionnaire d'accréditation par défaut IbmPKIX.
En plus de vérifier les certificats standard, le gestionnaire IbmPKIX vérifie les propriétés OCSP et recherche les certificats contenant des points de distribution de liste CRL (Certificate Revocation List). Ce processus est appelé "contrôle de liste de retrait de certificats étendu". Lorsque vous sélectionnez un gestionnaire d'accréditation, ses propriétés associées sont automatiquement définies en tant que propriétés système Java ; les fournisseurs IBMCertPath et IBMJSSE2 sont ainsi avertis que le contrôle de liste est activé.
Différences entre les gestionnaires d'accréditation Ibmx509 et IbmPKIX
- Le gestionnaire d'accréditation IbmX509 valide l'ensemble de la chaîne de certificats, quels que soient les certificats accrédités par le client/serveur. Toutefois, le gestionnaire d'accréditation IbmPKIX ne valide pas un certificat, même si vous lui indiquez que vous voulez l'accréditer. Le gestionnaire d'accréditation IbmPKIX valide uniquement les certificats signés du certificat que vous accréditez jusqu'au certificat feuille. En outre,
- IbmX509 impose qu'un certificat CA racine doit avoir une extension BASIC CONSTRAINTS. Autrement, le certificat ne peut pas être utilisé comme certificat CA racine. Cette condition BASIC CONSTRAINTS ne s'applique pas à IbmPKIX pour les certificats CA racine.
- Le gestionnaire d'accréditation IbmX509 valide les signatures et les vérifications d'expiration de certificat pour valider les certificats. . Le gestionnaire d'accréditation IbmPKIX exécute ces mêmes validations, mais également une vérification de liste de révocation de certificat qui détermine si l'autorité de certification a révoqué le certificat.
- Le gestionnaire d'accréditation IbmPKIX obtient automatiquement une liste de révocation de certificat (LRC) lorsqu'un certificat est reçu lorsqu'il existe des extensions de point de distribution LRC.
En outre, vous pouvez utiliser le protocole OCSP (Online Certificate Status Protocol) pour vérifier en ligne la validité d'un certificat. Toutefois, cette fonction nécessite de définir des propriétés système supplémentaires, comme indiqué dans le document Java Certification Path API Programmer's Guide disponible sur le site Web IBM® developerWorks.
Gestionnaire de relations de confiance personnalisé
Vous pouvez définir un gestionnaire de relations de confiance personnalisé chargé de procéder à des contrôles supplémentaires en fonction des besoins de l'environnement. Vous pouvez par exemple, dans un environnement donné, activer uniquement des connexions provenant du même sous-réseau TCP (Transmission Control Protocol). L'interface com.ibm.wsspi.ssl.TrustManagerExtendedInfo fournit des informations avancées sur la connexion, que n'indique pas l'interface javax.net.ssl.X509TrustManager standard de JSSE (Java Secure Sockets Extension). L'attribut trustManagerClass configuré détermine la classe instanciée par le module d'exécution, comme indiqué dans l'exemple de code suivant :<trustManagers xmi:id="TrustManager_1132357815718" name="CustomTrustManager"
trustManagerClass="com.ibm.ws.ssl.core.CustomTrustManager"
managementScope="ManagementScope_1132357815717"/>
L'attribut trustManagerClass doit implémenter l'interface javax.net.ssl.X509TrustManager et, en option, l'interface com.ibm.wsspi.ssl.TrustManagerExtendedInfo. Désactivation du gestionnaire de relations de confiance par défaut
Dans certains cas, vous pouvez souhaitez ne pas procéder à la vérification de certificat standard fournie par les gestionnaires de relations de confiance par défaut IbmX509 et IbmPKIX. Vous pouvez par exemple travailler avec une infrastructure de test automatisée interne, qui n'est pas liée à l'authentification, à l'intégrité ou à la confidentialité du client ou du serveur SSL. L'exemple de code suivant décrit un gestionnaire de relations de confiance personnalisé, tel que com.ibm.ws.ssl.core.CustomTrustManager, dont la propriété est définie à la valeur true.com.ibm.ssl.skipDefaultTrustManagerWhenCustomDefined=true
Vous pouvez définir cette propriété dans les propriétés globales, au début du fichier ssl.client.props pour les clients ou dans le fichier de propriétés personnalisé security.xml pour les serveurs. Vous devez configurer un gestionnaire de relations de confiance personnalisé lorsque vous désactivez le gestionnaire par défaut afin d'éviter que le serveur appelle ce dernier même si ce celui-ci est configuré. La désactivation du gestionnaire de relations de confiance par défaut n'est pas une pratique habituelle. Veillez au préalable à tester cette configuration dans un environnement de test. Pour plus d'informations sur la configuration d'un gestionnaire de relations de confiance personnalisé, voir Création d'une configuration de gestionnaire de tiers dignes de confiance personnalisée pour SSL