Configuração da Cadeia de Certificados em Sites Web

Para exemplificarmos este tema, utilizaremos os certificados da estrutura ICP-Brasil. Tanto a primeira versão do certificado root emitido pela ICP-Brasil "Autoridade Certificadora Raiz Brasileira" (ver imagem abaixo) que já é distribuido pelo Windows (tornando-se automaticamente disponivel para as versões do Internet Explorer ),

quanto o novo certificado raiz da ICP-Brasil (mesmo após o usuário ter efetuado a importação), em algumas situações, podem fazer com que o usuário encontre uma mensagem no Internet Explorer dizendo que o certificado digital do site não é confiável.

Em alguns destes estes casos o problema pode estar no servidor Web, e não no computador do usuário.

Quando um cliente acessa um site Web usando SSL, o servidor Web envia para o navegador o certificado digital do servidor. O navegador então valida o certificado do servidor, em seguida o certificado da autoridade certificadora (AC) que emitiu o certificado do servidor, e em seguida o certificado da AC que emitiu o certificado daquela AC, e assim sucessivamente até encontrar no topo da cadeia de confiança uma autoridade certificadora raiz em que o usuário confia.

Para fazer isso, no entanto, o navegador precisa ter os certificados de todas estas autoridades certificadoras intermediárias, isto é, aquelas autoridades certificadoras que estão entre a AC raiz e o certificado do servidor. Como geralmente as distribuições automaticas de certificados digitais contemplam somente a AC raiz (Isto também é verdade no caso do Windows), é necessário que de alguma forma o cliente obtenha também os certificados das autoridades certificadoras intermediárias para fazer a validação.

A maioria dos sites web "dá uma ajuda" ao navegador enviando já todos os certificados da cadeia de confiança, não só o certificado do site. Com isso o cliente monta toda a cadeia e valida o certificado sem que precise previamente ter o certificado de todas as autoridades intermediárias.

Alguns sites no entanto não seguem este comportamente, e enviam somente o certificado do site. O navegador precisa então ter previamente configurados os certificados intermediários, ou usar uma forma para localizá-los automaticamente utilizando uma extensão dos certificados chamada Authority Information Access (AIA), que ainda não está implementada amplamente na ICP-Brasil.

A melhor forma para resolver este problema seria configurar o servidor Web para enviar toda a cadeia de certificação. A forma como isto é feita depende do servidor Web utilizado:

Microsoft IIS - Verifique se toda a cadeia foi importada no seu servidor Windows, incluindo os certificados das ACs intermediárias. O IIS já manda por default toda a cadeia para o cliente, mas a partir do IIS 6 precisa ter instalado localmente todos certificados intermediários para fazer isso.

Apache - Verifique se o parâmetro SSLCertificateChainFile do arquivo de configuração do Apache está apontando para um arquivo que contenha todos os certificados da cadeia de certificação, concatenados em formato PEM (o chamado arquivo "PKCS#7 Bundle" ou .p7b). Este arquivo é em geral fornecido pela autoridade certificadora que emitiu o seu certificado.