A correção real para isso é garantir que o servidor apresente todos os certificados na cadeia e não apenas o certificado da entidade final (servidor).
Aponte o administrador do servidor para a Seção 7.4.2 da RFC 5246, que afirma claramente que Esta mensagem transmite a cadeia de certificados do servidor ao cliente.
Se o seu administrador recusar / não puder fazer isso por algum motivo, sua opção alternativa é tentar curl
trabalhar com o handshake malformado.
De acordo com uma mensagem na lista de correspondência do Curl:
Alguém pode confirmar se o cURL suporta (ou não) certificado intermediário?
Sim. Todos os certificados ca têm uma cadeia de certificados que vai até a raiz. O pacote CA que você usa com enrolamento precisa consistir dos certificados para toda a cadeia.
/ daniel.haxx.se
Você deve poder adicionar a CA raiz e todos os certificados intermediários a um pacote configurável e apontar curl
para ele usando a --cacert <file>
opção
À medida que os navegadores funcionam, você pode acessar os certificados CA corretos a partir daí. Na guia certificados (diferente para cada navegador, mas tenho certeza de que você descobrirá isso), visualize a cadeia de certificados. Clique duas vezes a raiz CA primeiro GlobalSign Root CA - G1 e no Detalhes guia, clique em Copiar para arquivo ... . Salve como root.cer
. Faça o mesmo com o AlphaSSL CA - SHA256 - G2 e salve-o como issuing.cer
. Junte os dois juntos em um único arquivo (por exemplo chain.cer
) e use isso como argumento para -cacert
.
Conforme gentilmente indicado pelo @AB, o certificado ausente também pode ser encontrado aqui .
Seus navegadores funcionam porque eles armazenam em cache certificados de CA. Se você navegou para um site configurado corretamente em algum momento no passado, cujo certificado foi emitido pela mesma CA que o certificado do servidor, ele será armazenado em cache pelo navegador. Quando você visitar o site configurado incorretamente posteriormente, o navegador usará os certificados da CA em seu cache para criar a cadeia. Para você, parece que está tudo bem, embora nos bastidores o servidor esteja mal configurado.
Observe que no Windows, o IE / Edge e o Chrome compartilham o mesmo cache, enquanto o Firefox usa o seu.
Além do acima, o IE / Edge e o Chrome (como compartilham a mesma pilha de criptografia) usarão uma extensão nos certificados denominada AuthorityInformationAccess . Isso tem uma opção caIssuer que fornece uma URL a partir da qual o certificado CA do certificado da entidade final pode ser baixado. Portanto, mesmo que um desses navegadores não tenha armazenado em cache os certificados ausentes da navegação anterior, ele poderá buscá-lo, se necessário. Observe que o Firefox não faz isso, e é por isso que às vezes o Firefox pode mostrar erros de certificado quando o IE / Edge e o Chrome parecem funcionar.