Liste des domaines sur un certificat SSL UCC / SAN

15

Existe-t-il un moyen de répertorier tous les domaines sur un certificat SSL SAN / UCC (idéalement en utilisant la ligne de commande sous linux / os x)?

De toute évidence, il doit y avoir un moyen d'extraire les données, car les navigateurs peuvent le faire. Malheureusement, je peux voir la liste mais je ne peux pas la copier-coller.

Jordan Reiter
la source

Réponses:

25

openssl x509 -text < foo.crt devrait faire l'affaire.

Dan Pritts
la source
3
Pour la postérité, c'est la commande complète que j'ai utilisée, puisque je le faisais pour un autre serveur:openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text
Jordan Reiter
3
Pour obtenir une liste de domaines délimitée par un espace propre, vous pouvez la passer par grep et sed comme çaopenssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
Geoffrey
Faites défiler vers le bas: la réponse de panticz.de est meilleure ;-)
lucaferrario
10

Vous pouvez lister les domaines avec cette commande (testé sur linux):

cat cert.pem | openssl x509 -text | grep DNS
panticz.de
la source
Celui-ci donne un meilleur résultat que la réponse acceptée.
VaTo
Oui, cela devrait plutôt être la réponse acceptée.
Kal
1

Si vous voulez juste voir les SAN, grep DNS:c'est la solution évidente.

Si vous souhaitez avoir une liste plus propre à traiter davantage, vous pouvez utiliser cette expression rationnelle Perl pour extraire uniquement les noms: @names=/\sDNS:([^\s,]+)/g

Par exemple:

true | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\bDNS:([^\s,]+)/g; print join("\n", sort @names);'

Qui produirait ceci:

example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org

Ainsi, vous pouvez diriger cela vers while read name; do echo "processing $name ..."; doneetc.

Ou pour une liste séparée par des virgules sur une ligne, remplacez join("\n",parjoin(",",

(Le -0777commutateur pour perl fait lire l'intégralité de l'entrée à la fois au lieu de ligne par ligne)

mivk
la source