Curl com certificado personalizado

3

Gostaria de usar o curl para trabalhar com sites assinados pelo goDaddy: Se eu ligar

curl mypage.com/bla

Estou recebendo um erro de verificação de certificado. Tentei obter o certificado ca com este snippet:

echo | openssl s_client -connect mysite.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem

e depois chamando

curl mypage.com/bla --cacert cert.pem

que também causou um erro de verificação. Eu verifiquei a data do certificado e assunto e tudo parece bem?

O que estou perdendo? Eu talvez precise de toda a cadeia? Se sim, existe um comando para obter tudo?

    
por ProfHase85 12.11.2014 / 13:02

2 respostas

3

CA em cacert significa autoridade de certificação. Você deve especificar o caminho cert ou cert da autoridade que assinou seu certificado, não seu próprio certificado

o comando

openssl x509 -in YourSitePemCert -text

deve listar uma linha de emissor. você deve obter o certificado do emissor e incluí-lo no arquivo cacert pem

(no seu caso, pesquise o lead da cadeia do godaddy para link )

    
por 12.11.2014 / 13:23
3

Segundo a documentação:

curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option.

Se esse servidor HTTPS usar um certificado assinado por uma CA representada no pacote, a verificação de certificado provavelmente falhou devido a um problema com o certificado (pode ter expirado ou o nome pode não corresponder ao nome do domínio no URL). Se você quiser desativar a verificação de curl do certificado, use a opção -k (or --insecure) .

Para o goDaddy, você deve usar o Certificado SSL e o CA Bundle ( gd_bundle.crt ). Você pode fazer o download em link

Eg.

curl https://mysite.com --cacert gd_bundle.crt
    
por 12.11.2014 / 13:31