Na pasta /etc/ssl/certs/
posso ver bem:
- Links simbólicos para os certificados armazenados em
/usr/share/ca-certificates/
- O arquivo BUNDLE
ca-certificates.crt
que contém todos os certificados no formato PEM
Vejo apenas certificados CA raiz...não vejo os certificados CA intermediários? Por quê?
Por exemplo, com o Let's encrypt CA, posso encontrar facilmente:
- ISRG_Root_X1.pem
- ISRG_Root_X2.pem
Mas onde estão os certificados intermediários Let's encrypt? No dia em que escrevo esta pergunta, há 4 certificados CR intermediários:
- E5
- E6
- R10
- R11
Acho que há em algum lugar no meu computador, porque consigo estabelecer com sucesso uma conexão SSL com um servidor (usando o certificado Let's Encrypt).
Você entendeu errado como os certificados são usados.
Os que você vê são as âncoras de confiança. Essas são as CAs raiz nas quais você (ou seu SO, ou os desenvolvedores do seu SO) confiam.
Quando você usa conectar a um serviço remoto (por exemplo, um servidor web), o servidor envia seu certificado (por exemplo, para unix.stackexchange.com), bem como todos e quaisquer certificados intermediários necessários para verificar esse certificado até uma raiz. Os detalhes estão no RFC 5246. Você só confia nessa cadeia de certificados se a raiz que assinou o primeiro intermediário estiver em seu armazenamento de âncora de confiança, que é armazenado
/etc/ssl/certs/
como você observou.Então, para responder à sua pergunta "Mas onde estão os certificados intermediários do Let's Encrypt?" - eles estão instalados no sistema remoto.
Se você for o servidor, então seu intermediário é armazenado em um arquivo cuja localização depende do serviço. Geralmente, o arquivo de configuração do serviço terá uma entrada que aponta para o certificado intermediário a ser usado, ou (mais provavelmente) aponta para um arquivo de cadeia que consiste tanto no certificado intermediário quanto no certificado do servidor.
Se você veio do mundo Windows, você pode ter visto CAs intermediárias instaladas no armazenamento de certificados de usuário ou computador. Isso ocorre simplesmente porque o Windows armazena em cache os certificados de CA intermediárias localmente e os torna visíveis na UI.
Não espere encontrá-los localmente!
Na maioria das vezes, o processo é o seguinte:
Durante a negociação SSL, o servidor envia um arquivo PEM com:
Localmente, você só tem o certificado CA raiz. É o suficiente para garantir a confiança de toda a cadeia.
NB: Falei apenas sobre Linux. O Mozilla Firefox funciona de forma diferente e armazena os certificados CA intermediários em um banco de dados SQLite interno.
Este link abriu meus olhos: Aarch_forum