'openssl': nome alternativo do assunto

6

Eu escrevi esse código para obter o nome comum do campo assunto no certificado SSL de um determinado domínio:

$ echo -e "GET / HTTP/1.1\nEOT" | \
   openssl s_client -connect google.com:443 2>&1 | \
   grep subject
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com

No entanto, isso só me dá o valor de "assunto". Os CNs alternativos podem ser listados no campo “Subject Alternative Name”. Por exemplo:

Então, como posso obter o valor do campo Subject Alternative Name no Bash?

    
por Mathias Bynens 07.03.2013 / 15:17

4 respostas

7

Isso pode não funcionar sob todas as circunstâncias, mas tente

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text | grep DNS
    
por 07.03.2013 / 15:24
3

O que @ stuart-p-bentley escreveu me fez pensar e eu criei uma lista delimitada por vírgulas de "Subject Alternative Names" usando openssl , awk e tr . A linha sed em sua resposta não funciona no FreeBSD por exemplo.

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text | awk '/X509v3 Subject Alternative Name/ {getline;gsub(/ /, "", $0); print}' | tr -d "DNS:"

Veja o que você obtém com o google.com.br

*.google.com,*.android.com,*.appengine.google.com,*.cloud.google.com,*.google-analytics.com,*.google.ca,*.google.cl,*.google.co.in,*.google.co.jp,*.google.co.uk,*.google.com.ar,*.google.com.au,*.google.com.br,*.google.com.co,*.google.com.mx,*.google.com.tr,*.google.com.vn,*.google.de,*.google.es,*.google.fr,*.google.hu,*.google.it,*.google.nl,*.google.pl,*.google.pt,*.googleadapis.com,*.googleapis.cn,*.googlecommerce.com,*.googlevideo.com,*.gstatic.cn,*.gstatic.com,*.gvt1.com,*.gvt2.com,*.urchin.com,*.url.google.com,*.youtube-nocookie.com,*.youtube.com,*.youtubeeducation.com,*.ytimg.com,android.com,g.co,goo.gl,google-analytics.com,google.com,googlecommerce.com,urchin.com,youtu.be,youtube.com,youtubeeducation.com
    
por 22.09.2014 / 12:20
2

Aqui está uma versão que irá funcionar em todas as circunstâncias (e retira o espaço inicial):

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text |
  sed -nr '/^ {12}X509v3 Subject Alternative Name/{n;s/^ *//p}'
    
por 08.08.2014 / 11:33
0

Use também o interruptor

-certopt no_pubkey,no_sigdump,no_validity,no_serial,no_header,no_issuer,no_version,no_aux,no_signame,no_subject
    
por 17.06.2015 / 15:35