O que é um arquivo PEM e como ele é usado?

Conteúdo

Pessoa desbloqueando arquivo digital com chave.

PEM é um formato de arquivo de contêiner frequentemente usado para armazenar chaves criptográficas. É usado para muitas coisas diferentes, uma vez que simplesmente define a estrutura e o tipo de codificação do arquivo que é usado para salvar alguns dados.

O que é um arquivo PEM?

PEM é apenas um padrão; contêm texto e o formato determina que os arquivos PEM comecem com …

-----COMEÇAR <modelo>-----

... e terminar com:

-----FIM <modelo>-----

Todo o resto é codificado em base64 (letras maiúsculas e minúsculas, dígitos, +, e /). Isso forma um bloco de dados que pode ser usado em outros programas. Um único arquivo PEM pode conter vários blocos.

Isso pode ser usado para representar todos os tipos de dados, mas é comumente usado para codificar arquivos-chave, como chaves RSA usadas para SSH e certificados usados ​​para criptografia SSL. O arquivo PEM informará para que é usado no cabeçalho; como um exemplo, você pode ver um arquivo PEM que começa com ...

-----BEGIN RSA PRIVATE KEY -----

... Seguido por uma longa sequência de dados, qual é a chave privada RSA real.

Arquivos PEM com certificados SSL

Os arquivos PEM são usados ​​para armazenar certificados SSL e suas chaves privadas associadas. Existem vários certificados na cadeia SSL completa e eles funcionam nesta ordem:

  • O certificado do usuário final, do que uma autoridade de certificação (NAQUELA) atribui ao seu nome de domínio. Este é o arquivo que nginx e Apache usam para criptografar HTTPS.
  • Até quatro certificados intermediários opcionais, concedido a autoridades de certificação menores por autoridades superiores.
  • O certificado raiz, o maior certificado da cadeia, que é auto-assinado pela CA primária.

Na prática, cada certificado está listado em um arquivo pem, usando blocos separados:

-----COMECE O CERTIFICADO-----
  //end-user
-----END CERTIFICATE-----
-----COMECE O CERTIFICADO-----
  //intermediate
-----END CERTIFICATE-----
-----COMECE O CERTIFICADO-----
  //root
-----END CERTIFICATE-----

Você receberá esses arquivos do seu provedor SSL para uso em seu servidor web. Como um exemplo, LetsEncrypt's certbot gera os seguintes certificados, colocado em /etc/letsencrypt/live/your-domain-name/ :

cert.pem chain.pem fullchain.pem privkey.pem
  • cert.pem é o certificado de usuário final.
  • chain.pem é o resto da cadeia; para este caso, é apenas o certificado raiz de LetsEncrypt.
  • fullchain.pem isto é cert.pem e chain.pem definir. Este é o arquivo passado para o nginx com o ssl_certificate diretriz.
  • privkey.pem é uma chave privada RSA gerada junto com o certificado.

Eles também podem usar o .crt extensão; Se você autoassinou um certificado com OpenSSL, você obterá um arquivo CRT em vez de PEM, mesmo que o conteúdo permaneça o mesmo e o uso seja o mesmo.

Para usar seus certificados, você precisará passá-los como parâmetros para o seu servidor web. Para nginx, você vai querer especificar o ssl_certificate (o arquivo PEM de string completo), e ssl_certificate_key (o arquivo PEM de chave privada RSA), depois de habilitar O SSL:

ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;

Para Apache, as configurações são simplesmente as mesmas, mas você vai precisar usar o SSLCertificateFile e SSLCertificateKeyFile diretivas:

SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem

Arquivos PEM com SSH

Arquivos PEM também são usados para SSH. Se em qualquer momento você tiver corrido ssh-keygen para usar ssh sem senha, sua ~/.ssh/id_rsa é um arquivo PEM, só sem a extensão.

Em particular, Amazon Web Services fornece um arquivo PEM que contém uma chave privada cada vez que você cria uma nova instância, e você deve usar esta chave para ser capaz de SSH em novas instâncias EC2.

RELACIONADO: Como adicionar seu arquivo EC2 PEM ao seu chaveiro SSH

Você deve usar o -i bandeira com ssh para especificar que deseja usar esta nova chave em vez de id_rsa:

ssh -i keyfile.pem root @ host

Isso permitirá que você entre no servidor normalmente, mas você terá que especificar este sinalizador todas as vezes.

Um método mais fácil é adicionar a chave privada ao seu agente ssh com ssh-add:

ssh-add keyfile.pem

Apesar disto, isso não persiste nas reinicializações, então você precisará executar este comando na inicialização ou adicioná-lo ao seu macOS keychain.

De qualquer forma, além disso, você pode simplesmente adicionar sua chave pública primária à instância ~/.ssh/authorized_keys depois de ter logado uma vez, mas este método deve funcionar imediatamente para quaisquer novas instâncias no futuro.

É importante observar que você ainda deve bloquear seu servidor SSH, mesmo se estiver usando chaves..

RELACIONADO: O que é encaminhamento de agente SSH e como ele é usado?

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.