Eu configurei uma pequena PKI usando o openssl ca
, seguindo um guia que explica a procedimento e alguns dos conceitos em bom detalhe. Quero realizar praticamente essa configuração de três camadas descrita nesse artigo, ou seja, que os certificados reais são emitidos por uma CA Intermediária que, por sua vez, é "governada" por uma CA Raiz, com a CA Raiz sendo autoassinada e eventualmente implantado para os clientes em questão. Eu tentei reproduzir a configuração no artigo o mais próximo possível, para evitar que eu personalizasse muitas coisas de uma vez que ainda não entendi.
Até agora, tenho o seguinte:
- O certificado e a 'infraestrutura' para a CA raiz.
- O certificado e a 'infraestrutura' para a CA intermediária.
- As CRLs de ambas as CAs.
- Um certificado de teste, emitido pela CA intermediária, para verificar se tudo isso funciona.
- cópias da CA de demonstração para comparação.
Em teoria, ao implantar o certificado da CA raiz em um navegador e, em seguida, acessar o site protegido pelo último certificado, eu recebo "o ícone de cadeado". Este funciona com o Internet Explorer, Chrome e Firefox. O Opera está agindo e segura com 'Conexão segura: erro fatal (1578)', então algo está obviamente quebrado.
Um artigo do fórum sugere que o problema está nas CRLs, então fui investigar lá. O Internet Explorer não tem problemas em abrir as CRLs e as exibe corretamente, sem qualquer aviso de que há algo errado. O Firefox, por outro lado, recusa e fornece "Código de erro ffffe00a", que indica problemas com a assinatura ( Error -8182: SEC_ERROR_BAD_SIGNATURE: Peer's certificate has an invalid signature.
). No entanto, isso ocorre somente quando eu importo a importação do certificado da CA primeiro. Caso contrário, a CRL será aceita sem problemas.
Eu verifiquei todos os certificados e CRLs com todas as invocações de openssl
e certutil.exe
da Microsoft em que eu pude obter minha mão, o que me deu a aprovação.
Colocando meus certificados lado a lado ao lado dos certificados de demonstração no artigo acima mencionado, não vejo diferença - além dos nomes, é claro. Então, em teoria, eles deveriam se comportar da mesma forma. Mas tentar importar o certificado raiz da CA de demonstração e, em seguida, observar a CRL funciona em todos os navegadores, enquanto minha própria CA raiz leva a esses erros estranhos. (Sem as chaves privadas da CA de demonstração, é claro que não posso testar se os certificados emitidos pela CA de demonstração funcionariam.)
Estou bloqueado. Parece que estou perdendo algo sutil, mas importante, mas estou sem idéias e recursos. Obrigado por quaisquer sugestões ou sugestões.