O que é um arquivo PEM e como usá-lo?
Shutterstock / FGC
PEM é um formato de arquivo contêiner freqüentemente usado para armazenar chaves criptográficas. Ele é usado para muitas coisas diferentes, pois simplesmente define a estrutura e o tipo de codificação do arquivo usado para armazenar um pouco de dados.
O que é um arquivo PEM?
PEM é apenas um padrão; eles contêm texto e o formato determina que os arquivos PEM comecem com & # 8230;
----- BEGIN < type > -----
& # 8230; e terminar com:
----- END < type > -----
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; por exemplo, você pode ver um arquivo PEM começando com & # 8230;
----- BEGIN RSA PRIVATE KEY -----
& # 8230; seguido por uma longa sequência de dados, que é 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. Vários certificados estão na cadeia SSL completa e funcionam nesta ordem:
- O certificado do usuário final, que é atribuído ao seu nome de domínio por uma autoridade de certificação (CA). Este é o arquivo que você usa no nginx e Apache para criptografar HTTPS.
- Até quatro certificados intermediários opcionais, fornecidos a autoridades de certificação menores por autoridades superiores.
- O certificado raiz, o mais alto certificado na cadeia, que é autoassinado pela CA primária.
Na prática, cada certificado é listado em um arquivo PEM, usando blocos separados:
----- BEGIN CERTIFICATE ----- // usuário final ----- END CERTIFICATE ----- ----- BEGIN CERTIFICATE ----- // intermediário ----- CERTIFICADO FINAL ----- ----- BEGIN CERTIFICATE ----- // root ----- CERTIFICADO FINAL -----
Você receberá esses arquivos do seu provedor SSL para uso no seu servidor da web. Por exemplo, o certbot de LetsEncrypt &’ gera os seguintes certificados, colocados em / etc / letsencrypt / live / your-domain-name /:
cert. pem chain. pem fullchain. pem privkey. pem
- cert. pem é o certificado do usuário final.
- chain. pem é o resto da cadeia; neste caso, é apenas o certificado raiz de LetsEncrypt.
- fullchain. pem é cert. pem e chain. pem combinados. Este é o arquivo passado para nginx com a diretiva ssl_certificate.
- privkey. pem é uma chave privada RSA gerada junto com o certificado.
Eles também podem usar a extensão . crt; se você autoassinou um certificado com OpenSSL, obterá um arquivo CRT em vez de PEM, embora o conteúdo ainda seja o mesmo e o uso seja o mesmo.
Para usar seus certificados, você terá que transmiti-los como parâmetros para o seu servidor da web. Para nginx, você desejará especificar o ssl_certificate (o arquivo PEM de cadeia completa) e ssl_certificate_key (o arquivo PEM de chave privada RSA), após ativar o SSL:
ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain. pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey. pem;
Para Apache, a configuração é basicamente a mesma, mas você precisará usar as diretivas SSLCertificateFile e SSLCertificateKeyFile:
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 você já executou ssh-keygen para usar o ssh sem uma senha, seu ~ / . ssh / id_rsa é um arquivo PEM, mas sem a extensão.
Mais notavelmente, o Amazon Web Services fornece um arquivo PEM contendo uma chave privada sempre que você cria uma nova instância, e você deve usar essa chave para poder fazer SSH em novas instâncias EC2.
Você terá que usar o sinalizador -i com ssh para especificar que deseja usar esta nova chave em vez de id_rsa:
ssh -i keyfile. pem root @ host
Isso fará com que você se conecte ao 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
No entanto, isso não persiste nas reinicializações, portanto, você precisará executar este comando na inicialização ou adicioná-lo às chaves do macOS.
Claro, você também pode simplesmente anexar sua chave pública primária à instância &’ s ~ / . ssh / authorized_keys depois de fazer login uma vez, mas este método deve funcionar fora da caixa para qualquer novas instâncias daqui para frente.
Via: How to Geek
Nenhum comentário