Extrair informações do certificado do arquivo

Usei uma VPN baseada em certificado (OpenVPN) em casa e no trabalho. Eu também escrevi um pequeno script de empacotador easy-rsapara que eu possa fazer algo parecido ./new-client jdoe 'Jon Doe'e ele irá gerar e assinar os certificados para mim, em seguida, empacotá-los em um único arquivo para que eu possa implementar as chaves facilmente.

Para fazer isso facilmente, o new-clientscript de pacote renomeia o cliente .crte os .keyarquivos para nomes genéricos, de forma que você não possa dizer a partir do nome do arquivo qual é o CN de um certificado.

Saída de um easy-rsacertificado emitido:

$ openssl x509 -subject -dates -fingerprint -noout -in mickey.crt
subject
= /C=US/ST=FL/L=Orlando/O=Disney/CN=mmouse/name=Mickey Mouse
notBefore
=Aug 9 16:20:06 2012 GMT
notAfter
=Aug 7 16:20:06 2022 GMT
SHA1
Fingerprint=11:25:1C:9E:19:FE:2A:47:3F:E7:0D:42:B0:5E:CD:E7:B4:A9:C8:98

Ou talvez você tenha um certificado da web que não consegue lembrar para onde ele vai. Contanto que seja um certificado x509, ele funcionará:

$ openssl x509 -subject -dates -fingerprint -noout -in star_acme_com.crt
subject
= /C=US/ST=Florida/L=Orlando/O=ACME INC/CN=*.acme.com
notBefore
=Nov 29 00:00:00 2011 GMT
notAfter
=Dec 3 12:00:00 2012 GMT
SHA1
Fingerprint=C1:42:DD:81:7C:74:83:91:33:AC:C6:54:1E:5C:BC:06:F3:B1:08:77

O exemplo do Mickey é especialmente interessante porque a maioria das ferramentas (OpenVPN) incluídas usa o nome comum dos certificados para fazer certas coisas. O arquivo foi renomeado para não corresponder ao nome comum. Isso permite que você veja facilmente o que o CN realmente é para um determinado certificado e não precise assumir que o nome do arquivo corresponde ao CN.