J'ai un fichier SSL CRT au format PEM. Existe-t-il un moyen d'extraire le nom commun (CN) du certificat à partir de la ligne de commande?
Si vous avez openssl
installé, vous pouvez exécuter:
openssl x509 -noout -subject -in server.pem
certtool -i < whatever.pem | egrep "^\s+Subject:"
Notez que cela dirige le fichier vers l'entrée standard via <
, sans l'utiliser comme argument. Sans egrep
cela imprimera tout le certificat, mais le CN est dans le Subject:
champ près du haut (attention il y a aussi une valeur CN dans le Issuer:
champ).
X.509 Certificate Information:
Version: 3
Serial Number (hex): 01
Issuer: [...] CN=unixandlinux.ex <- Not this one.
Validity: ...
Subject: CN=goldilocks
certtool
fait partie de gnutls, s'il n'est pas installé, recherchez-le. GnuTLS est un peu plus agréable que OpenSSL, IMO.
J'ai trouvé la réponse ci-dessus et je l'ai trouvée très utile, mais j'ai également constaté que la syntaxe de la commande certtool
(sur Ubuntu Linux, aujourd'hui) était sensiblement différente de celle décrite par goldilocks, tout comme la sortie. J'ai donc pensé qu'il était préférable de mettre à jour cette excellente réponse avec ce qui pourrait être la "version d'aujourd'hui".
Le "i"
option (maintenant?) signifie "importation", selon man certtool
, donc la commande appropriée semble être "d"
, "afficher." Donc, cette commande:
certtool d myfoo.crt
(L'extension de fichier dans mon cas se trouve être .crt
ne pas .pem
... ce n'est pas pertinent.)
... produit une sortie qui, dans la partie pertinente, ressemble à ceci:
Common Name : Foobar
Incontestablement, goldilocks avait raison: certtool
la sortie est beaucoup plus facile à travailler qu'avec openssl
dans ce cas.