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
echain.pem
definir. Este é o arquivo passado para o nginx com ossl_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?