J'ai un fichier .crt de paquet de certificat.
faire openssl x509 -in bundle.crt -text -noout
ne montre que le certificat racine.
Comment puis-je voir tous les autres certificats?
http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 suggère ce one-liner:
openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout
Cela a bien fonctionné pour moi, mais je ne comprends pas les détails, je ne peux donc pas dire s’il ya des mises en garde.
/etc/ssl/certs/ca-certificates.crt
et obtenuunable to load PKCS7 object
Java
keytool
fait le tour:Annotation: Windows double-clic ne fonctionne pas. Windows ne lit que le premier certificat du magasin de clés et étend automatiquement la chaîne de confiance à partir de son magasin de certificats intégré.
Résultats:
.crt
fichier ne sont pas affichés.crt
fichier. Cela peut conduire à des conclusions erronées.la source
À la suite de cette FAQ m'a conduit à ce script perl qui suggère très fortement à moi qui
openssl
n'a pas de support natif pour la manipulation du n ième certificat dans un paquet, et qu'au lieu nous devons utiliser un outil pour couper-et dés l'entrée avant d' alimenter chaque certificat àopenssl
. Ce script perl, librement adapté du script de Nick Burch lié ci-dessus, semble faire l'affaire:la source
Oneliner qui affiche un résumé de chaque certificat du fichier.
(Commando similaire mentionné dans une autre réponse, mais cela donne une sortie plus courte, sans l'option --text).
exemple:
la source
Ce n'est peut-être pas joli, ni élégant, mais cela a été rapide et a fonctionné pour moi en utilisant bash sur linux et des blocs au format PEM dans un fichier bundle ca-cert.
Vous pouvez tout mettre sur une ligne et ajuster les options openssl en fonction. J'aimerais vraiment qu'il y ait une solution plus élégante pour cela, mais dans ce cas, je pense que trouver la solution plus élégante aurait pris plus de temps que de chercher la solution la moins élégante.
la source
Comme il n'y a pas de solution basée sur awk:
La première commande scinde bundle en certs en recherchant les lignes BEGIN et END. La deuxième commande parcourt les certs extraits et les affiche.
la source
En bash, en général, une seule (longue) ligne de code est nécessaire :-)
la source
Petite modification au message de MadHatter pour vous permettre de copier / coller directement dans la CLI. J'ai également inclus le hachage MD5, ce qui est utile pour s'assurer que les certificats sont corrects. La ligne stdin renvoyée est le hachage md5 du ou des certificats.
Si vous voulez voir une belle sortie concise, utilisez cette version. Utile si vous vérifiez uniquement que vous avez inclus tous vos certificats, mais que vous ne vérifiez pas vraiment l'utilisation / etc du ou des certificats.
Juste au cas où votre version openssl ne prend pas en charge tous ces drapeaux, voici quelques exemples que vous pouvez utiliser. Même chose que le premier mais juste pipe à egrep.
Pour vérifier le hachage MD5 de la clé privée, vous pouvez procéder comme suit.
Référence: SSL Shopper - Correspondant de clé de certificat
la source
Voici une solution basée sur awk qui ne repose pas sur des fichiers intermédiaires.
Cela fonctionne en lisant des blocs PEM à partir de stdin et en concaténant chaque bloc en une seule ligne codée en base64. Les lignes sont ensuite lues, décodées et transmises à openssl sous forme de certificats codés DER.
la source
cat bundle.crt | awk -v cmd="openssl x509 -subject -noout" '/-----BEGIN/ { c = $0; next } c { c = c "\n" $0 } /-----END/ { print c|cmd; close(cmd); c = 0 }'
.Je voudrais ajouter ici la ligne de commande idiomatique de Perl:
S'il y a du texte alors un tweak légèrement plus robuste:
Il suffit de changer la valeur de ce que n devrait être dans la deuxième instruction pour obtenir le nième certificat.
la source
Méthode Windows
Une façon de voir toute la chaîne consiste (sous Windows bien sûr) à double-cliquer sur le crt puis à regarder dans l'onglet Chemin de certification. Cela montrera toute la chaîne même s'il y a seulement un Cert Intermediate ou Root Cert. Voir capture d'écran ci-dessous pour plus de détails. Si vous n'êtes pas sous Windows, je m'excuse de mon manque de connaissances sur les variantes Unix / Linux.
Remarque: cela peut entraîner des résultats erronés si le certificat intermédiaire se trouve dans votre magasin de clés local. Windows l'ajoutera automatiquement et ne montrera pas uniquement le contenu de l'ensemble.
Linux (méthode Ubuntu)
J'ai oublié votre commande initiale et vous avez une chose à sa place. Votre commande devrait ressembler à ceci:
Source: http://manpages.ubuntu.com/manpages/hardy/man1/x509.1ssl.html
la source
openssl
invocation donnait une erreur de syntaxe, mais qu'il ne répertoriait que le premier certificat de l'ensemble. Deuxièmement, les deux invocations sont fonctionnellement identiques. Troisièmement, et probablement le plus important, le vôtre ne fonctionne pas non plus, du moins pour moi; lui aussi ne répertorie que le premier certificat de l’ensemble.