Como um certificado SSL pode funcionar apenas para alguns clientes?

11

Meu provedor de hospedagem reemitiu e reinstalou recentemente um certificado SSL para o meu domínio, depois que o antigo expirou por engano.

Agora posso navegar no site novamente por HTTPS, assim como meu host e vários outros usuários.

No entanto, alguns usuários (pelo menos uma dúzia de centenas) ainda estão recebendo Your connection is not securemensagens de erro em diferentes navegadores e plataformas. (Está sendo difícil diagnosticar um problema que não consigo reproduzir.)

Entendo que navegadores diferentes usam listas diferentes de autoridades de certificação (CA.)

  1. Como um usuário que executa a mesma versão do Firefox como eu (45.0.1 no OS X) está recebendo um SEC_ERROR_UNKNOWN_ISSUERerro (apenas para o meu site) enquanto não estou? O que torna isso possível? O usuário disse que limpou o cache e reiniciou o laptop.

Eu executei uma verificação SSL no digicert.com . O resultado é este:

Certificado SSL não é confiável

O certificado não é assinado por uma autoridade confiável (verificando no repositório raiz do Mozilla). Se você comprou o certificado de uma autoridade confiável, provavelmente precisará instalar um ou mais certificados intermediários. Entre em contato com o seu provedor de certificados para obter ajuda na sua plataforma de servidor.

  1. Como posso conectar-me ao site sem erro SSL, se for esse o caso?
Fabien Snauwaert
fonte
1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.- Como é que você deixou essa responsabilidade em suas mãos?
precisa saber é o seguinte
3
Simplesmente porque não sou administrador de sistemas, alugo um servidor dedicado gerenciado deles. (Para a pequena história de fundo, eu escrever o material e código, no topo da gestão do negócio, fazê-lo sysadmin também, apesar de interessante, seria um demasiados chapéus de aprendizagem da língua.)
Fabien Snauwaert
7
@joeqwerty: Porque é o trabalho deles? Ele está literalmente pagando para que resolvam essas coisas para ele.
Lightness Races in Orbit
@LightnessRacesinOrbit: Essa é uma suposição que eu não fiz, daí a pergunta.
joeqwerty
1
bugzilla.mozilla.org/show_bug.cgi?id=399324 é o relatório de erros que solicita suporte para o download automático de certificados intermediários no Firefox. A discussão (há 8 anos) se resume a "O IE faz isso!" / "Para o inferno com o IE, a RFC diz que é opcional!" / "Já ouviu falar do princípio da robustez?" / "A configuração do servidor está ruim e você deve se sentir mal!"

Respostas:

22

A cadeia de certificados do seu certificado está incompleta. Provavelmente, seu provedor não conseguiu instalar algum certificado intermediário ao instalar o novo certificado.

Na maioria das vezes, esses certificados intermediários são fornecidos pela autoridade SSL, para fornecer suporte a alguns navegadores e sistemas operacionais mais antigos. É por isso que, embora funcione para você, não funciona para alguns de seus clientes.

Um utilitário realmente excelente para verificar problemas de SSL em seu site é o teste do servidor SSL do SSLlabs . Como você pode ver no link acima, não apenas você está tendo um problema em cadeia aqui, mas também o algoritmo de assinatura usado para criar seu certificado é fraco, seu servidor da web ainda é vulnerável ao ataque do POODLE e ainda suporta o RC4, que é também considerado inseguro ...

Eu não quero dizer nada contra o seu provedor de servidor da web, mas na sua posição eu os enviaria por correio eletrônico, para que eles corrigissem todos esses problemas o mais rápido possível, ou mudassem para outro provedor ...

s1lv3r
fonte
Obrigado, isso é muito útil. Por pura curiosidade, alguma idéia de por que um cliente no OS X e a mesma versão do Firefox que a minha está recebendo um SEC_ERROR_UNKNOWN_ISSUERerro enquanto eu não estou? Poderia ser sua versão do sistema operacional é diferente?
Fabien Snauwaert 11/04
1
@FabienSnauwaert Sim, se você rolar para baixo até "Simulação de aperto de mão", o teste SSLLabs tentará simular várias combinações de versões de SO / navegador. O navegador não lida com conexões SSL totalmente por conta própria, mas depende parcialmente da implementação do sistema operacional. Definitivamente, a versão do sistema operacional faz a diferença.
precisa saber é o seguinte
3
Não é apenas que os clientes possam ter listas diferentes de autoridades de certificação. Também é possível que alguns dos clientes armazenem em cache certificados intermediários, de modo que um site com um certificado intermediário ausente possa funcionar se o navegador tiver visitado anteriormente um site que configurou corretamente esse certificado intermediário.
kasperd
O site SSLlabs é uma boa ferramenta. Obrigado pela referência.
Parapluie
12

Para que um certificado seja confiável, ele deve ser assinado por uma entidade que é confiável pela combinação navegador / SO ou que, por sua vez, foi assinado por essa entidade. Isso geralmente é feito por uma CA raiz confiável que assina uma CA intermediária e a CA intermediária assina seu certificado. Isso cria uma cadeia, assim:

  1. CA raiz confiável do seu computador e assina
  2. CA intermediária, que indica
  3. Seu certificado, que é confiável apenas devido à cadeia que leva de volta à CA raiz.

O problema aqui é com o certificado CA intermediário. Para garantir que todos possam validar a cadeia de volta à CA raiz, seu provedor deve incluir o certificado intermediário na configuração do servidor. Nesse caso, eles não o fizeram.

A razão pela qual funciona para alguns usuários é que eles possuem o certificado intermediário em seu próprio "armazenamento confiável". Nesses casos, eles aceitarão seu certificado porque já confiam no intermediário. Porém, no caso de seus visitantes terem um sistema operacional / navegador diferente, eles não têm o certificado intermediário; portanto, eles precisam obtê-lo em seu servidor da web - e o servidor da web não o distribui, portanto, eles não têm como verificando.

Jenny D
fonte
Obrigado, isso me ajuda a ver a questão claramente agora. Existe algum truque para que os usuários adicionem o certificado intermediário ao seu "armazenamento confiável" enquanto aguardam meu host corrigir o certificado? por exemplo: visitando outro site SSL que depende dele ou algo assim?
Fabien Snauwaert 11/04
1
@FabienSnauwaert Não há truque, infelizmente. Visitar um site que tenha o mesmo certificado intermediário não ajudará; eles precisariam baixar o certificado e adicioná-lo manualmente ao navegador. Acredito que esse certificado em particular esteja incluído nos navegadores mais recentes - ele funciona no Firefox 45.0.1, mas não no 43.0.4, por isso foi incluído em algum lugar entre essas duas versões. Portanto, se você conseguir que seus clientes atualizem seus navegadores, isso ajudaria.
Jenny D
4
Os certificados intermediários @JennyD são armazenados em cache pelos navegadores modernos, portanto, é provável que a visita a um site diferente que use o mesmo intermediário funcione. No entanto, isso realmente não é algo que se deva perguntar aos usuários ... (consulte: bugzilla.mozilla.org/show_bug.cgi?id=629558 , sslmate.com/blog/post/chrome_cached_sha1_chains )
Bob
0

Se você estava usando Fixação de Chave Pública HTTP e seu provedor forneceu um novo certificado, as chaves públicas já podem ter sido alteradas. Essas chaves são salvas no navegador do cliente pelo período especificado.

jarvis
fonte