Validation de la chaîne de certificats...

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Ce document explique comment valider une chaîne de certificats avant de télécharger le certificat dans un keystore ou un Truststore dans Apigee Edge. Le processus s'appuie sur la boîte à outils OpenSSL pour valider la chaîne de certificats et est applicable à tout environnement où OpenSSL est disponible.

Avant de commencer

Avant de suivre la procédure décrite dans ce document, assurez-vous de bien comprendre les sujets suivants:

  • Si le concept de chaîne de certificat ne vous est pas familier, consultez la section Chaîne de confiance.
  • Si vous ne connaissez pas bien la bibliothèque OpenSSL, consultez la page OpenSSL.
  • Si vous souhaitez utiliser les exemples de ligne de commande de ce guide, installez ou mettez à jour la dernière version du client OpenSSL.
  • Vérifiez que les certificats sont au format PEM. Si les certificats ne sont pas au format PEM, suivez les instructions de la section Convertir des certificats dans un format compatible pour les convertir au format PEM.

Valider l'objet et l'émetteur du certificat pour la chaîne complète

Pour valider la chaîne de certificats à l'aide de commandes OpenSSL, suivez les étapes décrites dans les sections suivantes:

Diviser la chaîne de certificats

Avant de valider le certificat, vous devez diviser la chaîne de certificats en certificats distincts en procédant comme suit:

  1. Connectez-vous au serveur sur lequel le client OpenSSL existe.
  2. Si ce n'est pas déjà fait, divisez la chaîne de certificats en plusieurs certificats :
    • Certificat d'entité:entity.pem
    • Certificat intermédiaire:intermediate.pem
    • Certificat racine: root.pem

La figure suivante montre un exemple de chaîne de certificats:

Flux de la chaîne de certificats: certificat d'identité vers certificat intermédiaire et certificat racine

Vérifier l'objet et l'émetteur du certificat

Cette section explique comment obtenir l'objet et l'émetteur des certificats, et vérifier que vous disposez d'une chaîne de certificats valide.

  1. Exécutez la commande OpenSSL suivante pour obtenir les valeurs Subject et Issuer de chaque certificat de la chaîne, de entity à root, et vérifiez qu'ils forment une chaîne de certificats appropriée :
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    certificate est le nom du certificat.

  2. Vérifiez que les certificats de la chaîne respectent les consignes suivantes :
    • Le certificat Subject de chaque certificat correspond au certificat Issuer du certificat précédent dans la chaîne (à l'exception du certificat Entity).
    • Subject et Issuer sont identiques pour le certificat racine.

    Si les certificats de la chaîne respectent ces consignes, la chaîne de certificats est considérée comme complète et valide.

    Exemple de validation de la chaîne de certificats

    L'exemple suivant est le résultat des commandes OpenSSL pour un exemple de chaîne de certificats contenant trois certificats:

    Certificat d'entité

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    Certificat intermédiaire

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    Certificat racine

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    Dans l'exemple ci-dessus, notez ce qui suit:

    • Le Subject du certificat intermédiaire correspond au Issuer du certificat d'entité.
    • Le Subject du certificat racine correspond au Issuer du certificat intermédiaire.
    • Les éléments Subject et Issuer sont identiques dans le certificat racine.

    Dans l'exemple ci-dessus, vous pouvez confirmer que l'exemple de chaîne de certificat est valide.

Vérifier l'objet du certificat et le hachage de l'émetteur

Cette section explique comment obtenir le hachage de l'objet et de l'émetteur des certificats, et comment vérifier que vous disposez d'une chaîne de certificats valide.

Il est toujours recommandé de vérifier la séquence de hachage des certificats, car cela peut vous aider à identifier des problèmes tels que la présence d'espaces ou de caractères spéciaux indésirables dans le nom commun (CN) du certificat.

  1. Exécutez la commande OpenSSL suivante pour obtenir la séquence hash de chaque certificat de la chaîne, de entity à root, et vérifiez qu'ils forment une chaîne de certificats appropriée.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    certificate est le nom du certificat.

  3. Vérifiez que les certificats de la chaîne respectent les consignes suivantes:
    • Le certificat Subject de chaque certificat correspond au certificat Issuer du certificat précédent dans la chaîne (à l'exception du certificat Entity).
    • Subject et Issuer sont identiques pour le certificat racine.

    Si les certificats de la chaîne respectent ces consignes, la chaîne de certificats est considérée comme complète et valide.

    Exemple de validation de la chaîne de certificats via une séquence de hachage

    L'exemple suivant est le résultat des commandes OpenSSL pour un exemple de chaîne de certificats contenant trois certificats:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    Dans l'exemple ci-dessus, notez ce qui suit:

    • Le subject hash du certificat intermédiaire correspond au issuer hash du certificat d'entité.
    • Le subject hash du certificat racine correspond au issuer hash du certificat de l'émetteur.
    • Les éléments subject et issuer hash sont identiques dans le certificat racine.

    Dans l'exemple ci-dessus, vous pouvez confirmer que l'exemple de chaîne de certificat est valide.

Vérifier l'expiration du certificat

Cette section explique comment vérifier si tous les certificats de la chaîne ont expiré à l'aide des méthodes suivantes:

  • Obtenez les dates de début et de fin du certificat.
  • Obtenez l'état d'expiration.

Date de début et de fin

Exécutez la commande OpenSSL suivante pour obtenir les dates de début et de fin de chaque certificat de la chaîne, de entity à root, et vérifiez que tous les certificats de la chaîne sont en vigueur (la date de début est antérieure à la date du jour) et ne sont pas arrivés à expiration.

Exemple de validation de l'expiration du certificat via les dates de début et de fin

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

État d'expiration

Exécutez la commande OpenSSL suivante pour vérifier si le certificat a déjà expiré ou s'il va expirer dans le prochain fichier N seconds. Cette commande renvoie l'état d'expiration du certificat dans le contexte de la date système actuelle.

openssl x509 -checkend <N Seconds> -noout -in certificate

certificate est le nom du certificat.

Exemple de validation de l'expiration du certificat via l'option de validation

La commande suivante utilise 0 seconds pour vérifier si le certificat a déjà expiré ou non:

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

Dans cet exemple, le message Certificate will not expire indique que le certificat n'a pas encore expiré.