Glossário / Referência do desenvolvedor
Certificado intermediário
- O que é um certificado intermediário?
- Um certificado intermediário fica entre um certificado raiz e um certificado de folha, é assinado pelo raiz e assina o de folha, de modo que a chave privada do raiz pode permanecer off-line e sem uso.
As autoridades de certificação nunca assinam o certificado de um site com a chave do certificado raiz. Elas assinam um intermediário, guardam a chave do raiz off-line e emitem a partir do intermediário, que pode ser substituído em semanas, e não nos vinte anos de vida de um raiz. Quando um servidor esquece de enviar seu intermediário, os navegadores disfarçam a falha e os clientes mais rígidos não, de modo que um site pode parecer normal no Chrome e falhar em um aplicativo.
Como funciona
Um certificado intermediário é um certificado de autoridade que não é uma âncora de confiança. Ele carrega a extensão basicConstraints com o campo CA definido como true, o que permite assinar outros certificados, e ele próprio é assinado por um raiz ou por outro intermediário. A verificação sobe a partir do certificado do servidor, conferindo cada assinatura com a chave contida no certificado acima dele, e para ao chegar a algo que já está no repositório de confiança local.
Dividir a emissão dessa forma traz três vantagens. A chave do raiz permanece em um módulo off-line que só sai para cerimônias programadas e com testemunhas. O dano fica contido, porque um intermediário comprometido pode ser revogado e reemitido sem tocar no repositório de raízes de nenhum dispositivo. E uma autoridade pode separar suas linhas de produto, de modo que problemas na camada automatizada e barata não afetem a camada auditada.
A assinatura cruzada é o artifício que torna uma autoridade nova utilizável. Uma mesma chave intermediária pode ter dois certificados: um assinado pelo raiz da própria organização e outro assinado por um raiz consolidado que já está em dispositivos antigos. A Let's Encrypt dependeu disso por anos, porque o ISRG Root X1 estava ausente em versões do Android que haviam deixado de receber atualizações, então ela servia uma cadeia com assinatura cruzada da IdenTrust. A muleta sobreviveu ao raiz por trás dela, que expirou em 30 de setembro de 2021, e a Let's Encrypt finalmente deixou de servir a cadeia com assinatura cruzada em 6 de junho de 2024.
A montagem da cadeia é a parte em que os operadores erram. Um servidor deve enviar o próprio certificado mais todos os intermediários acima dele, parando antes do raiz, que o cliente já tem. Os navegadores escondem as omissões buscando a peça que falta na URL da extensão de acesso às informações da autoridade ou reutilizando uma cópia em cache. Uma biblioteca de pagamentos, um aplicativo móvel ou um cliente de linha de comando em geral não faz nenhuma das duas coisas e simplesmente informa que a cadeia não é confiável.
Onde você o encontra
O BIP70 transportava intermediários dentro da própria mensagem de pagamento. O campo pki_data levava uma estrutura X509Certificates cuja primeira entrada era o certificado do próprio comerciante, seguida dos intermediários necessários para chegar a um raiz, com o raiz omitido porque se esperava que a carteira já o tivesse. É exatamente a ordem que um servidor TLS envia, transportada para um buffer de protocolo.
Fora do bitcoin, os intermediários se revelam sempre que uma conexão funciona em um programa e falha em outro. Uma corretora cujo endpoint de API lança um erro de certificado em um script de negociação enquanto o site carrega normalmente quase sempre omitiu um intermediário da cadeia. Testar com uma ferramenta que não faz o reparo silencioso do navegador é como detectar isso antes que seu bot o faça.
Certificado intermediário vs certificado raiz
Um raiz e um intermediário são ambos certificados de autoridade, e a diferença está em quem os assinou e onde a chave fica. Um raiz é autoassinado e tira seu poder da lista de inclusão de um fabricante. Um intermediário tira seu poder da assinatura acima dele, o que significa que a autoridade emissora pode revogá-lo em uma tarde, sem nenhuma atualização de software em lugar algum. Na operação do dia a dia, o intermediário faz quase todas as assinaturas enquanto o raiz faz quase nenhuma, e essa assimetria é a razão de ser de toda essa camada.