Problemas ao construir uma PKI com o openssl

3

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.

    
por Vucar Timnärakrul 09.12.2012 / 04:55

2 respostas

0

Acontece que o problema era simplesmente um problema de cache. Recriar todos os CAs e certificados a partir do zero (apenas para garantir) e, o mais importante: limpar o cache do navegador de todos os navegadores.

De certa forma, as várias sugestões para problemas de CRL acabaram sendo a causa raiz. Como a CRL deve ser armazenada em cache (e especialmente para a CA raiz ter uma vida útil bastante longa), ela era armazenada em cache. Desde que eu tenho tentado construir o PKI, eu estive riscando e recriando várias CAs, CRLs e várias outras vezes. Quando eu estava fazendo os testes finais, os navegadores tinham os certificados de CA mais recentes, mas ainda estavam tentando combiná-los com as antigas CRLs ainda no cache do navegador (a URL da CRL não mudou). Claro, eles não combinaram e tanto o Opera quanto o Firefox - corretamente - reclamaram.

Depois de liberar os caches do navegador e reimplementar o certificado raiz, finalmente observei nos logs do servidor da web que o Opera solicitou as CRLs para as CAs raiz e intermediária - algo que eu não vi antes (pois elas ainda eram em cache). E a partir de então tudo correu bem. Consegui instalar a CA raiz e ninguém está mais reclamando.

Agora o trabalho real começa…

    
por 09.12.2012 / 18:29
1

Se o certificado estiver configurado corretamente de uma perspectiva da CA, talvez o servidor da web ou o navegador não esteja construindo a cadeia corretamente.

Certifique-se de que o servidor Web tenha o certificado raiz e intermediário instalado corretamente e, em particular, que alguns servidores (ou balanceadores de carga) precisem ter a cadeia "vinculada" usando um comando específico do aplicativo.

Como alternativa, saiba que cada navegador IE e Firefox (não seguro sobre o Chrome) mantém seu próprio CA trust store. Você terá que instalar a raiz e talvez o CA CA no respectivo armazenamento.

Outra ferramenta que você pode usar para comparar certificados é o inspetor ASN.1, disponível aqui ( link )

    
por 09.12.2012 / 10:50

Tags