Obtém o nome comum (CN) do certificado SSL?

50

Eu tenho um arquivo SSL CRT no formato PEM. Existe uma maneira que eu possa extrair o nome comum (CN) do certificado da linha de comando?

    
por Naftuli Kay 03.12.2013 / 08:58

4 respostas

71

Se você tiver openssl instalado, poderá executar:

openssl x509 -noout -subject -in server.pem
    
por 03.12.2013 / 09:14
6
certtool -i < whatever.pem | egrep "^\s+Subject:"

Observe que está direcionando o arquivo para a entrada padrão via < , não o usando como argumento. Sans egrep isto imprimirá todo o certificado, mas o CN está no campo Subject: próximo ao topo (cuidado, também há um valor CN no campo Issuer: ).

X.509 Certificate Information:
    Version: 3
    Serial Number (hex): 01
    Issuer: [...] CN=unixandlinux.ex  <- Not this one.
    Validity: ...
    Subject: CN=goldilocks

certtool faz parte do gnutls, se não estiver instalado basta procurar por isso. O GnuTLS é um pouco melhor que o OpenSSL, IMO.

    
por 03.12.2013 / 09:14
1

Eu encontrei a resposta acima, e achei muito útil, mas eu também achei que a sintaxe do comando certtool (no Ubuntu Linux, hoje) era visivelmente diferente do descrito por goldilocks, como foi a saída. Então, achei melhor atualizar essa excelente resposta com o que pode ser "a versão de hoje".

A opção "i" (now?) significa "import", de acordo com man certtool , portanto, o comando apropriado parece ser "d" , "display". Então, este comando:

certtool d myfoo.crt

(a extensão de arquivo no meu caso é .crt não .pem ... isso não é relevante.)

... produz uma saída que, na parte relevante, se parece com isso:

Common Name     : Foobar

Inquestionavelmente, goldilocks estava certo: certtool output é muito mais fácil de trabalhar do que openssl neste caso.

    
por 22.03.2017 / 14:41
-1

eu usei: openssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}' add | sed -e 's/^[ \t]*//' Se você não pode viver com o espaço em branco

    
por 23.10.2018 / 16:18