Vérifier un certificat de la chaîne à l'aide d'openssl vérifier
Je suis en train de construire sa propre chaîne de certificat à la suite componentens:
Root Certificate - Intermediate Certificate - User Certificate
Racine Cert est un certificat auto-signé, Certificat Intermédiaire est signé par le Root et Utilisateur par l'Intermédiaire.
Maintenant, je veux vérifier si un Certificat Utilisateur a son point d'ancrage par le Certificat Racine.
Avec
openssl verify -verbose -CAfile RootCert.pem Intermediate.pem
la validation est ok. Dans l'étape suivante, j'ai valider l'Utilisateur Cert avec l'
openssl verify -verbose -CAfile Intermediate.pem UserCert.pem
et la validation d'erreur s'affiche 20 à 0 profondeur de recherche:impossible d'obtenir locales certificat de l'émetteur
Quel est le problème?
- Stack Overflow est un site pour la programmation et les questions de développement. Cette question semble être hors-sujet, car il n'est pas sur la programmation ou le développement. Voir Quels sont les sujets que pouvez-vous nous parler ici dans le Centre d'Aide. Peut-être Super-Utilisateur ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander cela. Voir aussi Où dois-je poster des questions à propos de Dev Ops?.
- nope. c'est un très utile
- ouais c'est bien, mais il devrait être demandé là: security.stackexchange.com
Vous devez vous connecter pour publier un commentaire.
De 'vérifier' documentation: "Si un certificat est constaté, qui est son propre émetteur, il est supposé être l'autorité de certification racine". En d'autres termes, l'autorité de certification racine besoins d'auto-signé pour vérifier le travail. C'est pourquoi votre deuxième commande n'a pas fonctionné.
Essayez plutôt ceci:
Il permettra de vérifier l'ensemble de votre chaîne en une seule commande.
man verify
, j'ai trouvé que le-untrusted
paramètre est correcte à utiliser lorsque vous spécifiez le certificat intermédiaire.-untrusted
ne vérifie pas si la chaîne de certificats est pleinement valide. Veuillez envisager de passer à la fois intermédiaire et de la racine de commande comme-CAfile
que d'autres questions suggère.openssl verify -CAfile /usr/local/etc/openssl/cert.pem -untrusted Intermediate.pem UserCert.pem
C'est l'un des rares emplois légitimes pour
cat
:Mise à jour:
Comme Greg Smethells points dans les commentaires, cette commande implicitement les fiducies Intermédiaires.pem. Je recommande la lecture de la première partie de le post de Greg références (la deuxième partie est plus spécifiquement sur pyOpenSSL et n'est pas adapté à cette question).
Dans le cas où la poste s'en va, je vais citer les paragraphes importants:
Il semble openssl va arrêter la vérification de la chaîne dès qu'un certificat racine est rencontré, qui peut également être Intermédiaire.pem si elle est auto-signé. Dans ce cas RootCert.pem n'est pas considérée. Donc, assurez-vous que les Intermédiaires.pem est à venir à partir d'une source de confiance avant de compter sur la commande ci-dessus.
-untrusted
optionopenssl verify -CAfile RootCert.pem -untrusted <(cat Intermediate1.pem Intermediate2.pem) UserCert.pem
dans le cas de plusieurs intermédiaires non fiables.-untrusted
option plusieurs fois. de homme Cette option peut être spécifié plus d'une fois pour inclure les certificats non fiables à partir de plusieurs fichiers.openssl verify -CAfile RootCert.pem -untrusted Intermediate1.pem -untrusted Intermediate2.pem UserCert.pem
Le problème, c'est que
openssl -verify
ne pas faire le travail.Comme mentionné Priyadi,
openssl -verify
s'arrête à la première certificat auto-signé, par conséquent, vous n'avez pas vraiment vérifier la chaîne, comme c'est souvent l'intermédiaire cert est auto-signé.Veuillez noter que la réponse de Pierre est correct, cependant la sortie de
openssl -verify
est aucune idée de ce que tout vraiment oeuvres par la suite. Oui, il peut en trouver certains problèmes, mais pas tous.Voici un script qui fait le travail de vérification d'un certificat de chaîne avant de l'installer dans Apache. Peut-être que cela peut être amélioré avec quelques-uns des plus mystique OpenSSL de la magie, mais je ne suis pas OpenSSL gourou et travaux suivants:
Il y a un GitHub Gist de ce qui pourrait avoir des mises à jour
Les conditions préalables de ce script:
/etc/ssl/certs
comme d'habitude, par exemple sur UbuntuDIR
où vous stockez les 3 fichiers:DIR/certificate.crt
qui contient le certificatDIR/certificate.key
qui contient la clé secrète pour votre webservice (sans phrase de passe)DIR/certificate.bundle
qui contient le CA-Bundle. Sur la façon de préparer le bundle, voir ci-dessous../check DIR/certificate
(ce qui suppose que le script est nommécheck
dans le répertoire courant)CA-Bundle is not needed
. Cela signifie, que vous (lire:/etc/ssl/certs/
) fait confiance au certificat de signature. Mais il est hautement improbable dans le WWW.Comment créer le
certificate.bundle
fichier?Dans le WWW de la chaîne de confiance ressemble généralement à ceci:
/etc/ssl/certs
certificate.crt
)Maintenant, l'évaluation a lieu à partir du bas vers le haut, cela signifie, en premier lieu, votre certificat est lu, puis l'inconnu certificat intermédiaire est nécessaire, alors peut-être la croix de signature de certificat et ensuite
/etc/ssl/certs
est consulté pour trouver le bon certificat de confiance.Le ca-bundle doivent être réalisés dans exactement le bon traitement de commande, ce qui signifie que le premier certificat nécessaire à l' (le certificat intermédiaire qui signe le certificat) vient en premier dans le bundle. Ensuite, la croix-signature-cert est nécessaire.
Généralement de votre autorité de certification (l'autorité qui a signé votre certificat) fournira un bon ca-bundle-fichier. Si non, vous devez choisir les certificats intermédiaires et
cat
ensemble dans un seul fichier (sur Unix). Sur Windows, vous pouvez simplement ouvrir un éditeur de texte (commenotepad.exe
) et collez-les certificats dans le fichier, le premier nécessaires sur le dessus et en suivant les autres.Il y a autre chose. Les fichiers doivent être au format PEM. Certains CAs d'émission DER (binaire) format. PEM est facile à repérer: C'est l'ASCII lisible. Pour plus sur la façon de convertir quelque chose dans PEM, voir Comment faire pour convertir .crt pour .pem et suivre la route de briques jaunes.
Exemple:
Vous avez:
intermediate2.crt
l'intermédiaire cert, qui a signé votrecertificate.crt
intermediate1.crt
un autre intermédiaire cert, qui a flambéintermediate2.crt
crossigned.crt
qui est une croix de signature de certificat auprès d'une autre autorité de certification qui a signé,intermediate1.crt
crossintermediate.crt
qui est un autre intermédiaire de l'autre autorité de certification qui a signécrossigned.crt
(vous n'aurez probablement jamais voir une telle chose)Puis à la bonne
cat
devrait ressembler à ceci:Et comment pouvez-vous trouver les fichiers qui sont nécessaires ou pas et dans quel ordre?
Bien, l'expérience, jusqu'à ce que le
check
vous dit tout est OK. C'est comme un ordinateur de jeu de puzzle à résoudre l'énigme. Tous les. Unique. Temps. Même pour les pros. Mais vous obtiendrez de meilleurs à chaque fois que vous avez besoin pour ce faire. Si vous êtes certainement pas seul avec toute la douleur. C'est le protocole SSL, ya' sais? SSL est probablement l'un des pires dessins que j'ai jamais vu en plus de 30 ans des professionnels de l'administration système. Jamais demandé pourquoi la crypto n'est pas devenu courant dans les 30 dernières années? C'est pourquoi. 'nuff said.-untrusted
.J'ai dû faire une vérification d'une letsencrypt certificat et j'ai fait comme ceci:
openssl verify -CAfile letsencrypt-root-cert/isrgrootx1.pem.txt -untrusted letsencrypt-intermediate-cert/letsencryptauthorityx3.pem.txt /etc/letsencrypt/live/sitename.tld/cert.pem
/etc/letsencrypt/live/sitename.tld/cert.pem: OK
Espère que cela vous aide pour votre letsencrypt certs.
Merci pour Priyadi, votre solution m'a aidé à trouver cette commande. Palease assurez-vous de upvote sa solution.
Après la coupure d'une journée entière sur exactement le même problème , n'ayant aucune connaissance préalable sur les certificats SSL, j'ai téléchargé le CERTivity Gestionnaire De Fichiers De Clés et importé mon fichier de clés à elle, et a obtenu une coupe à la visualisation de la chaîne de certificats.
Capture d'écran :
openssl verify
.Vous pouvez facilement vérifier une chaîne de certificat avec openssl. Le fullchain comprendra le CA cert donc, vous devriez voir les détails à propos de l'autorité de certification et le certificat lui-même.
openssl x509-in fullchain.pem -text-noout