Skip to content
Latchkey

O Que É um Arquivo PEM? Explicado

Um arquivo PEM é um container de texto que embrulha dados criptográficos - chaves ou certificados - como base64 entre marcadores legíveis BEGIN e END.

PEM é o formato que você quase sempre vê quando abre um arquivo de chave ou certificado. Aqueles blocos que começam com uma linha de traços e "BEGIN CERTIFICATE" são PEM. Porque o PEM é texto puro, ele viaja com facilidade por arquivos de configuração e secrets, que é exatamente por que pipelines de CI se apoiam nele para certs TLS, chaves de assinatura e credenciais de aplicação.

O que é um arquivo PEM

PEM (Privacy Enhanced Mail, um nome vindo de suas origens) é uma codificação de texto que pega dados criptográficos binários, os codifica em base64 e os embrulha entre linhas de cabeçalho e rodapé marcando o que contém. O binário por baixo normalmente é codificado em DER; o PEM apenas o torna seguro para texto.

Os marcadores BEGIN e END

Cada bloco PEM é delimitado por linhas como os marcadores BEGIN e END nomeando o conteúdo - um certificado, uma chave pública ou uma chave privada. Um único arquivo .pem pode conter vários blocos, por exemplo um certificado seguido de sua cadeia. Os marcadores dizem às ferramentas como interpretar cada bloco.

O que os arquivos PEM contêm

PEM é um container, não uma coisa específica. Ele pode conter um certificado TLS, uma cadeia de certificados, uma chave pública ou uma chave privada. O texto do marcador é o que os distingue. É por isso que um único hábito de manipulação de PEM cobre muitos cenários de credenciais no CI.

Arquivos PEM no CI

Um padrão comum é armazenar uma credencial PEM - uma chave privada de GitHub App, um cert de cliente TLS - como um secret de CI, e depois reescrevê-la em um arquivo no job para uma ferramenta consumir. Porque o PEM é texto, ele armazena limpo como secret, embora preservar suas quebras de linha importe ou as ferramentas o rejeitarão.

Writing a PEM secret to a file
# Restore a PEM private key from a secret in CI
steps:
  - run: |
      printf "%s" "${{ secrets.APP_PRIVATE_KEY }}" > app.pem
      chmod 600 app.pem

Nota Latchkey

Secrets PEM são mascarados nos logs nos runners Latchkey assim como nos hospedados pelo GitHub. Escrever uma chave PEM em um arquivo com permissões restritivas no job é a forma padrão de alimentá-la a uma CLI sem expô-la.

Principais conclusões

  • Um arquivo PEM é um container de texto que embrulha dados criptográficos em base64 entre marcadores BEGIN e END.
  • Ele pode conter certificados, cadeias de certificados, chaves públicas ou chaves privadas - os marcadores dizem qual.
  • O CI armazena credenciais PEM como secrets de texto e as reescreve em arquivos para as ferramentas usarem.

Guias relacionados