O Firefox reporta SEC_ERROR_CA_CERT_INVALID após alterar o certificado do site

0

Eu tenho um servidor em execução na minha rede interna. Para suporte a SSL, configurei uma CA interna (usando o OpenSSL) e emiti um certificado para o servidor. A cadeia de certificados é a seguinte:

Example Root CA V1
+-- server.example.com

Instalei o certificado do servidor no servidor e importei o certificado raiz no Firefox, e isso funcionou até agora.

Como o certificado raiz está prestes a expirar, decidi configurar uma CA totalmente nova com uma hierarquia mais profunda:

Example Root CA V2
+-- Example Signing CA V2
    +-- server.example.com

Eu também criei um certificado de usuário, assinado pela CA de assinatura.

Eu adicionei o certificado de usuário no Firefox. A nova autoridade de certificação raiz mostra em Autoridades e o certificado intermediário (CA de Assinatura) é exibido em Outros. Para o certificado raiz, defini as três marcas de verificação em Editar confiança.

Em seguida, atualizei o certificado no servidor. Quando tento conectar-me ao servidor, o Firefox reclama que a conexão não é segura:

server.example.com uses an invalid security certificate.
The certificate is not trusted because it was issued by an invalid CA certificate.
Error code: SEC_ERROR_CA_CERT_INVALID

Clicando no código de erro, me dá:

https://server.example.com/

Issuer certificate is invalid.

HTTP Strict Transport Security: true
HTTP Public Key Pinning: false

Certificate chain: 

seguido pelo certificado do servidor, pelo certificado da CA intermediária e pelo certificado da CA raiz.

O servidor executa o ownCloud e o Webmin; até agora só substituí o certificado Webmin. O Firefox é a versão 50.1.0.

O que está errado aqui?

    
por user149408 07.01.2017 / 13:49

1 resposta

0

Resolveu. Aparentemente SEC_ERROR_CA_CERT_INVALID é uma indicação de que um dos certificados na cadeia não é aprovado / confiável para o propósito para o qual está sendo usado.

Ao examinar meus certificados, descobri que meu certificado de CA intermediário não era um certificado de CA, conforme suas extensões x509_v3. Eu regenerado o certificado intermediário com as seguintes configurações:

X509v3 extensions:
    X509v3 Extended Key Usage: critical
        TLS Web Server Authentication, TLS Web Client Authentication
    X509v3 Basic Constraints: 
        CA:TRUE
    X509v3 Key Usage: 
        Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign, CRL Sign

Em seguida, assinei novamente a solicitação cert do servidor com o certificado intermediário bom e importei o certificado intermediário para o Firefox. Agora, o certificado intermediário mostra sob Autoridades, não em Outros.

O único desafio foi substituir o certificado no Webmin, pois efetivamente me mantive fora da interface da Web.

  • SSH no servidor
  • sudo vi /etc/webmin/miniserv.conf
  • Altere ssl=1 para ssl=0 e salve
  • sudo /etc/init.d/webmin restart
  • Faça login no Webmin via HTTP simples, substitua o certificado pelo bom e faça o logout novamente.
  • sudo vi /etc/webmin/miniserv.conf
  • Altere ssl=0 de volta para ssl=1 e salve
  • sudo /etc/init.d/webmin restart

Quando tentei me conectar ao meu servidor via HTTPS, funcionou.

Lição aprendida: Ao assinar uma solicitação de certificado com o OpenSSL, NÃO há verificação para garantir que o certificado de assinatura seja realmente um certificado de autoridade de certificação. Tudo parece funcionar bem, e você não receberá um erro ou qualquer outra indicação de que algo está errado até tentar conectar-se ao servidor pela primeira vez.

    
por 07.01.2017 / 14:56