Como posso verificar no download se o certificado SSL de um site é para um host em que eu confio?

1

Geralmente

Eu quero ser capaz de fazer uma conexão HTTPS com um site e, ao negociar o SSL, verifique se:

  1. O certificado é válido em todos os aspectos para o host listado no certificado (não expirado, assinado pela CA confiável) e

  2. O certificado é para um host que eu especifico (ou seja, posso estar conectando via HTTPS a example1.com, mas apenas quero verificar se o certificado usado por example1.com é válido para example4.com porque confio example4.com não foi comprometido).

Especificamente

Há um site afiliado ao redhat que usa um certificado válido para * .redhat.com, mas que não está no domínio redhat.com. De qualquer outra maneira, este certificado é válido (ou seja, é emitido por uma CA confiável, não expirou e tenho 99,99% de certeza de que não é roubado, embora, se fosse, isso significaria que o redhat estava comprometido, portanto Eu teria problemas maiores), e eu quero baixar um módulo RPM deste site, enquanto (espero que) garanta que eu não tenha sido MITM.

Por isso, quero fazer o download de algo do exemplo.com de afiliados redhat ao verificar se o site ao qual estou me conectando está realmente usando um certificado de redhat válido.

Coisas que eu já tentei:

curl - a curva mais próxima dessa funcionalidade é este flag de opção , que apenas desabilita todas as autenticações de certificados, o que é não o que eu quero, e

wget - tem apenas a opção --no-check-certificate sem argumentos, o que é igualmente inútil.

De acordo com a documentação do libcurl, eu poderia usar este , que parece promissor, mas menciona que requer que eu tenha "... uma quantidade não trivial de conhecimento das bibliotecas openssl", que eu demonstravelmente não possuo. Eu posso programar em C ou Python ou qualquer outra coisa, embora o que seja mais útil seja (em ordem decrescente de preferência):

  1. uma solução bash / sh usando apenas aplicativos de linha de comando que normalmente são fornecidos com distribuições baseadas em RHEL,
  2. ou uma solução usando uma linguagem de script comum (Python, Perl, Ruby etc.) sem dependências de biblioteca que requerem download,
  3. ou uma solução usando uma linguagem não scriptada (C / C ++, Java, Haskell, etc.) que, novamente, não requer nenhum download de biblioteca.
por Parthian Shot 29.05.2014 / 15:59

0 respostas