Sou responsável pela manutenção de dois servidores Debian. Toda vez que tenho que fazer alguma coisa com certificados de segurança, procuro tutoriais no Google e passo até que finalmente funcione.
No entanto, em minhas pesquisas, muitas vezes me deparo com diferentes formatos de arquivo ( .key
, .csr
, .pem
), mas nunca consegui encontrar uma boa explicação sobre qual é a finalidade de cada formato de arquivo.
Eu queria saber se o bom pessoal aqui do ServerFault poderia fornecer algum esclarecimento sobre este assunto?
O SSL existe há tempo suficiente, você pensaria que haveria um acordo sobre os formatos de contêiner. E você está certo, existem. Muitos padrões como isso acontece. No final, todas essas são maneiras diferentes de codificar dados formatados em Abstract Syntax Notation 1 (ASN.1) — que é o formato em que os certificados x509 são definidos — de maneiras legíveis por máquina.
/etc/ssl/certs
de certificado CA ) ou pode incluir uma cadeia de certificados inteira incluindo chave pública, chave privada e certificados raiz. Confusamente, ele também pode codificar um CSR (por exemplo, como usado aqui ), pois o formato PKCS10 pode ser traduzido em PEM. O nome é de Privacy Enhanced Mail (PEM) , um método com falha para e-mail seguro, mas o formato de contêiner usado permanece e é uma tradução base64 das chaves x509 ASN.1./etc/ssl/private
. Os direitos sobre esses arquivos são muito importantes, e alguns programas se recusarão a carregar esses certificados se estiverem configurados incorretamente.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Alguns outros formatos que aparecem de tempos em tempos:
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 em .DER com uma extensão diferente. Curti....keystore
como uma extensão. Ao contrário dos certificados de estilo .pem, esse formato tem uma maneira definida de incluir certificados de caminho de certificação.Em resumo, existem quatro maneiras diferentes de apresentar certificados e seus componentes:
Eu espero que isso ajude.
O PEM por si só não é um certificado, é apenas uma forma de codificação de dados. Os certificados X.509 são um tipo de dados comumente codificados usando PEM.
PEM é um certificado X.509 (cuja estrutura é definida usando ASN.1), codificado usando o ASN.1 DER (regras de codificação distintas), então executado através da codificação Base64 e preso entre linhas âncoras de texto simples (BEGIN CERTIFICATE e END CERTIFICATE ).
Você pode representar os mesmos dados usando as representações PKCS#7 ou PKCS#12, e o utilitário de linha de comando openssl pode ser usado para fazer isso.
Os benefícios óbvios do PEM é que é seguro colar no corpo de uma mensagem de e-mail porque possui linhas de âncora e é limpo em 7 bits.
A RFC1422 tem mais detalhes sobre o padrão PEM relacionado a chaves e certificados.
Às vezes, um
.crt
arquivo já é um.pem
. Veja: https://stackoverflow.com/questions/991758/openssl-pem-key