Comment vérifier les certificats SSL sur la ligne de commande?

52

J'essaie de valider / vérifier que la clé RSA, le paquetage ca et le certificat stockés ici sont corrects. Ils ne sont pas servis par un serveur web. Comment puis-je les vérifier?

xénoterracide
la source
Regardez la openssl x509section du manuel.
alex
Le manuel OpenSSL verify peut vous aider ici. Aussi, voir cette page a d'excellents exemples.
Stefan Lasiewski

Réponses:

61

En supposant que vos certificats soient au format PEM, vous pouvez effectuer les opérations suivantes:

openssl verify cert.pem

Si votre "ca-bundle" est un fichier contenant des certificats intermédiaires supplémentaires au format PEM:

openssl verify -untrusted ca-bundle cert.pem

Si votre openssl n'est pas configuré pour utiliser automatiquement un ensemble de certificats racine (par exemple, in /etc/ssl/certs), vous pouvez utiliser -CApathou -CAfilespécifier l'autorité de certification.

Andy
la source
9
Attention, la commande openssl verify est plus permissive que prévu. Par défaut, en plus de vérifier le fichier CA indiqué, il recherche également les autorités de certification correspondantes dans le répertoire certs du système, par exemple / etc / ssl / certs. Pour éviter ce problème et vous assurer que vous vérifiez bien votre certificat de CA donné par CAfile, vous devez également passer une option -CApath avec un répertoire inexistant, par exemple: openssl verify -verbose -CApath nos-serveur-CAfile cacert.pem .crt
DSimon
2
-CApath nosuchdirAutre mise en garde: si vous utilisez alors la combinaison server.crt et cacert.pem doit inclure l'autorité de certification racine; si openssl ne peut fonctionner qu'avec une autorité de certification intermédiaire avec ces fichiers, il se plaindra.
DSimon
Il ne dit aucun fichier de ce type dans /certs/. cela causera-t-il un problème? parce que im est empilé dans une situation où mon serveur fonctionne, http curl fonctionne, mais https .. curl obtient une erreur. où le site Web a cessé de fonctionner.
Giorgi Gvimradze
18

Voici une procédure pour vérifier une chaîne de certificats:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Cela ne nécessite pas d'installer CA où que ce soit.

Voir https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work pour plus de détails.

Vadzim
la source
1
Attention, l'option -CAfile est plus permissive que prévu. Voir mon commentaire sur la réponse acceptée pour plus de détails.
DSimon
1
@ DSimon, j'ai ajouté -CApath nosuchdirceci pour répondre. Je vous remercie.
Vadzim
Pas de problème, heureux de vous aider. :-) Une mise en garde que j'ai trouvée après avoir posté mon commentaire précédent: si le fichier spécifié avec -CAfileest en soi un certificat intermédiaire, alors openssl se plaindra. Ce comportement est correct car il verifynécessite une chaîne complète allant jusqu'à l'autorité de certification racine, mais peut être trompeur.
DSimon
2
Ma version ( OpenSSL 1.1.1 11 Sep 2018) nécessite que l'argument -CApathsoit un répertoire existant.
Jake Cobb le