Buscando verdade sobre os certificados TLS e MacOS - navegador, curl, openssl comparado

1

Em um Mac, o High Sierra 10.13.5, estou vendo uma diferença na validação da certificação TLS. O Chrome e o Safari estão satisfeitos com a validação do TLS ao acessar o link . Além disso, curl não tem reclamações e eu não estou usando '-k'. No entanto, o openssl reclama que não consegue encontrar o certificado intermediário ao tentar este openssl s_client -connect www.visitflorida.com:443 < /dev/null | openssl x509 -subject -noout . Eu usei tanto a base openssl quanto a instalada.

Eu tentei adicionar no -CAfile intermediate.pem (onde baixei o certificado intermediário do TrustWave). Mesmo que o certificado intermediário não apareça em nenhum lugar em meu KeyChain, eu exportei minhas raízes do sistema KeyChain para um único arquivo e tentei fazê-lo também via -CAfile. Nada está funcionando. A única localização do sistema de arquivos que vejo os certificados é /etc/ssl/cert.pem e quando especifico isso via -CAfile, ele ainda falha.

Alguém sugeriu que meus navegadores e curl têm um requisito mais flexível de validação do TLS do que o openssl. Esse é realmente o caso? Eu tenho dificuldade em acreditar nisso. Alguém pode me ajudar a explicar esse comportamento?

BTW, sei que isso pode ser resolvido incluindo o certificado intermediário com o certificado de ponto de extremidade no ponto de extremidade do TLS para www.visitflorida.com. Agora, se pudéssemos encontrar esse arquivo de chave ausente!

Felicidade do navegador:

Curllog:

    
por Kevin Buchs 19.06.2018 / 18:53

1 resposta

3

Navegadores como o Internet Explorer / Edge, Chrome e Safari examinarão o campo caIssuer das extensões AIA para obter um URL de onde ele pode baixar um certificado de CA superior se não for fornecido pelo servidor durante o handshake TLS.

O certificado do seu site tem um campo caIssuer definido como http://ssl.trustwave.com/issuers/OVCA2_L1.crt , portanto, todos os navegadores acima farão o download desse URL e o usarão para criar a cadeia.

Ferramentas de linha de comando, como s_client do OpenSSL, não usarão o caIssuer para baixar esse certificado adicional, daí a situação que você testemunhou. Se você tivesse que experimentar o Mozilla Firefox, você perceberia o mesmo lá também, já que o Mozilla se recusaria a usar esta extensão.

O campo caIssuer acaba ocultando o problema real, que é um mau administrador do servidor. RFC 5246 Seção 7.4.2 determina que o servidor deve enviar um certificate_list , que consiste em seu próprio certificado seguido por quaisquer certificados CA intermediários.

    
por 19.06.2018 / 19:38