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