Se você tiver openssl instalado, poderá executar:
openssl x509 -noout -subject -in server.pem
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?
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.
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.
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
Tags openssl certificates