Inspecione o certificado de um site por um proxy HTTP com OpenSSL
Use o OpenSSL s_client por meio de um proxy HTTP CONNECT mantendo alinhados o nome do destino, o SNI e a verificação do certificado.
Use um OpenSSL s_client instalado que ofereça suporte a -proxy. Para um endpoint HTTP CONNECT autorizado:
openssl s_client -proxy proxy.example:3128 -connect example.com:443 -servername example.com -verify_hostname example.com -verify_return_error -showcertsSubstitua o endereço do proxy e use de forma consistente o nome de destino pretendido. Para testar um destino público por meio de um proxy que você pode escolher, selecione um candidato HTTP na lista de proxies HTTP. -connect seleciona o alvo, -servername envia SNI para o host virtual TLS e -verify_hostname verifica a identidade. SNI sozinho não verifica o nome do host. Consulte o manual da versão instalada ao adaptar as opções.
-showcerts mostra o que o servidor enviou, mas não declara que a cadeia é confiável. -verify_return_error faz os erros de verificação encerrarem o handshake; caso contrário, o cliente de diagnóstico pode continuar após os erros. Para um serviço privado, use material de CA aprovado em vez de confiar em um certificado baixado aleatoriamente.
| Resultado | Etapa |
|---|---|
| 407 | Autenticação do proxy antes do TLS do destino. |
| Destino CONNECT negado | Política de destino do proxy. |
| Certificado recebido e verificação tentada | Troca TLS do destino pelo túnel aceito. |
Com OpenSSL 3.x e um proxy HTTP que autentica com Basic, use as opções de conta de proxy do s_client mantendo a verificação do destino.
Um endpoint somente SOCKS não fornece a interface de proxy HTTP usada por este comando. Com interceptação TLS autorizada, o certificado exibido pode ter sido emitido por esse intermediário. Compare seu emissor e a relação de confiança pretendida antes de atribuir a diferença a um site com defeito.