web-dev-qa-db-fra.com

Obtenir un nom commun (CN) à partir du certificat SSL?

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?

70
Naftuli Kay

Si vous avez openssl installé, vous pouvez exécuter:

openssl x509 -noout -subject -in server.pem
101
Jeff Smith
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.

7
goldilocks

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.

2
Mike Robinson