O SSL existe há tempo suficiente para você pensar que haveria um acordo sobre formatos de contêiner. E você está certo, existem. Muitos padrões como isso acontece. Então é isso que eu sei, e tenho certeza que outros irão gritar.
- .csr - esta é uma solicitação de assinatura de certificado. Alguns aplicativos podem gerá-los para envio a autoridades de certificação. O formato atual é PKCS10, que é definido em RFC 2986 . Ele inclui alguns / todos os detalhes importantes do certificado solicitado, como assunto, organização, estado, e a chave pública do certificado para ser assinado. Estes são assinados pela CA e um certificado é retornado. O certificado retornado é o certificado público (que inclui a chave pública, mas não a chave privada), que pode estar em alguns formatos.
-
.pem - Definido nos RFCs 1421 através de 1424 , esse é um formato de contêiner que pode incluir apenas o certificado público (como com instalações do Apache e arquivos de certificado de CA
/etc/ssl/certs
) ou pode incluir uma cadeia inteira de certificados incluindo chave pública, chave privada e certificados raiz. Confusamente, também pode codificar um CSR (por exemplo, como usado aqui ) como o formato PKCS10 pode ser traduzido em PEM. O nome é de Privacy Enhanced Mail (PEM) , um método com falha para email seguro, mas o formato de contêiner usado usava vidas on, e é uma tradução base64 das chaves x509 ASN.1. -
.key - Este é um arquivo formatado em PEM contendo apenas a chave privada de um certificado específico e é meramente um nome convencional e não um nome padronizado. Nas instalações do Apache, isso frequentemente reside em
/etc/ssl/private
. Os direitos sobre esses arquivos são muito importantes, e alguns programas se recusarão a carregar esses certificados se estiverem errados. -
.pkcs12 .pfx .p12 - Originalmente definido pela RSA nos Padrões de criptografia de chave pública ( PKCS abreviado), a variante "12" foi originalmente aprimorada pela Microsoft e, posteriormente, enviada como RFC 7292 . Esse é um formato de contêiner com senha que contém pares de certificados públicos e privados. Ao contrário dos arquivos .pem, esse contêiner é totalmente criptografado. Openssl pode transformar isso em um arquivo .pem com chaves públicas e privadas:
openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Alguns outros formatos que aparecem de tempos em tempos:
-
.der - Uma maneira de codificar a sintaxe ASN.1 em binário, um arquivo .pem é apenas um arquivo .der codificado em Base64. O OpenSSL pode convertê-los em .pem (
openssl x509 -inform der -in to-convert.der -out converted.pem
). O Windows os vê como arquivos de certificado. Por padrão, o Windows exportará certificados como arquivos formatados .DER com uma extensão diferente. Como ... - .cert .cer .crt - Um arquivo formatado .pem (ou raramente .der) com uma extensão diferente, reconhecida pelo Windows Explorer como um certificado, que .pem não é.
-
.p7b .keystore - Definido em RFC 2315 como número 7 do PKCS, este é um formato usado pelo Windows para o intercâmbio de certificados. O Java entende isso de forma nativa e geralmente usa
.keystore
como extensão. Ao contrário dos certificados de estilo .pem, esse formato tem uma maneira definida para incluir certificados de caminho de certificação. - .crl - Uma lista de revogação de certificados. As Autoridades de Certificação as produzem como uma maneira de desautorizar os certificados antes da expiração. Às vezes, você pode baixá-los dos sites da CA.
Em resumo, existem quatro maneiras diferentes de apresentar certificados e seus componentes:
- PEM - regido por RFCs, é usado preferencialmente por software de código aberto. Pode ter uma variedade de extensões (.pem, .key, .cer, .cert, more)
- PKCS7 - Um padrão aberto usado pelo Java e suportado pelo Windows. Não contém material de chave privada.
- PKCS12 - Um padrão privado da Microsoft que foi posteriormente definido em um RFC que fornece segurança aprimorada em relação ao formato PEM de texto simples. Isso pode conter material de chave privada. É usado preferencialmente pelos sistemas Windows e pode ser livremente convertido para o formato PEM através do uso de openssl.
- DER - O formato pai do PEM. É útil pensar nisso como uma versão binária do arquivo PEM codificado em base64. Não é usado rotineiramente muito fora do Windows.
Espero que isso ajude.