Uma pergunta geral sobre arquivos chaim.pem; Usei um csr obtido do meu host e usei o Certbot do LetsEncrypt para gerar um certificado https; Eu usei o seguinte comando
$ certbot certonly --manual --csr arquivo-com-meu-csr.txt
O certbot produziu 3 arquivos 0000_cert.pem, 0000_chain.pem, 0001_chain.pem; Em seguida, usei o arquivo cert.pem para instalar o certificado de volta no meu host; Tudo funcionou muito bem;
Minha pergunta é para que servem os arquivos "chain", pois não os usei em nenhum lugar; Em que cenários eles serão úteis?
Sua saída do Certbot é um pouco incomum. Você deve ter recebido um arquivo "fullchain.pem" contendo tudo na ordem correta, não como vários arquivos separados.
(Sem mencionar a própria instalação manual - você terá que automatizar isso.)
Todas as autoridades de certificação WebPKI têm pelo menos um sistema de duas camadas:
Por exemplo, aqui está um diagrama de Let's Encrypt , cuja hierarquia geralmente é:
A maioria dos clientes TLS (navegadores, sistemas operacionais) só vem com o certificado raiz pré-instalado. Dessa forma, eles não precisam ser atualizados sempre que uma CA altera sua infraestrutura – somente quando as próprias CAs são adicionadas ou removidas.
No entanto, para verificar a assinatura de cada certificado, você precisa ter o certificado imediatamente anterior (por exemplo, você não pode verificar diretamente a assinatura do certificado do servidor usando apenas a CA raiz – não há relação criptográfica direta entre os dois).
Isso significa que o cliente deve ter todos os certificados intermediários para completar a cadeia entre uma CA raiz. Se algum dos intermediários estiver faltando, o cliente não terá mais informações suficientes para verificar o restante.
Para HTTPS, o método principal é fazer com que o servidor envie todos os seus certificados de cadeia – porque o servidor supostamente já os possui.
Alguns navegadores da Web têm mecanismos alternativos para isso - por exemplo, o Firefox mantém um cache de intermediários "vistos anteriormente", enquanto o Windows tenta baixar intermediários usando a URL AIA em seu certificado.
Mas nem todos os navegadores fazem isso e, mais importante, a maioria dos clientes TLS que não são da Web não tem nenhuma dessas alternativas. Embora uma cadeia incompleta geralmente funcione para HTTPS, ela não funcionará para coisas como SMTP ou IRC.
Provavelmente, funcionou apenas para alguns usuários (principalmente Windows e Firefox), mas muitos outros foram deixados de fora. Não assuma que, por funcionar em seu próprio sistema, deve funcionar em todos os outros.
Ferramentas como SSL Labs ou
gnutls-cli example.com:443
irão avisá-lo sobre situações em que o servidor não envia a cadeia completa.No entanto, é possível que qualquer que seja o "seu host" também baixe proativamente os intermediários das informações do AIA (suspeito um pouco que o IIS do Windows possa estar fazendo isso), preenchendo as lacunas automaticamente. Mas se isso é feito em qualquer lugar, é bastante raro.
Uso regular do Certbot
Normalmente, o Certbot armazena os certificados recebidos no formato "pronto para uso" na
/etc/letsencrypt/live
pasta, com fullchain.pem contendo o certificado do host e quaisquer certificados pai necessários. Por exemplo, no Apache httpd 2.4.x você usaria:Uma explicação simples pode ser encontrada aqui
Primeiro, o que é um PEM:
O que é um arquivo PEM:
Arquivos Pem usados com certificados SSL:
Então, o que é chain.pem?
Os
chain.pem
arquivos contêm seus certificados intermediários.Ao instalar um certificado SSL, você deve instalar o certificado do site, mas também os certificados intermediários. Existem importantes. Como dito aqui :
E aqui :