Não é possível usar o bundle CA incorporado para verificar o certificado SSL GoDaddy SHA2

4

Eu me deparei com um problema interessante. Temos um script PHP que contata um remetente LTL ( link ). Esse script falhou porque não pode validar o certificado SSL. Fui ao site e descobri que eles estavam usando um certificado GoDaddy SHA2 (usa os Pacotes de certificados GoDaddy - G2 , que é o que é usado para SHA2).

Eu tenho a versão mais recente do ca-certificate instalado e parece que eles têm Autoridade de Certificação Raiz do Go Daddy - G2 , mas não é a mesma coisa e falha em todas as formas de validação. Consegui finalmente fazê-lo funcionar copiando o pacote e usando isso diretamente em uma solicitação CURL. Mas isso é simplesmente uma solução alternativa. Há algo mais que eu estou perdendo que poderia fazer isso funcionar sem instalar a CA diretamente?

# openssl s_client -connect facts.dohrn.com:443
CONNECTED(00000003) depth=0 OU = Domain Control Validated, CN = facts.dohrn.com verify
error:num=20:unable to get local issuer certificate verify return:1
depth=0 OU = Domain Control Validated, CN = facts.dohrn.com verify
error:num=27:certificate not trusted verify return:1 depth=0 OU =
Domain Control Validated, CN = facts.dohrn.com verify
error:num=21:unable to verify the first certificate verify return:1
--- Certificate chain 0 s:/OU=Domain Control Validated/CN=facts.dohrn.com
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com,
Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure
Certificate Authority - G2
--- Server certificate [certificate removed]
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=facts.dohrn.com
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com,
Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure
Certificate Authority - G2
--- No client certificate CA names sent
--- SSL handshake has read 1470 bytes and written 563 bytes
--- New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion:
NONE SSL-Session:
Protocol : TLSv1
Cipher : RC4-SHA
Session-ID: 1A23000017A7003411F3833970B7FA23C6D782E663CE0C8B17DE4D5A15DEE1A5
Session-ID-ctx:
Master-Key: F6C9C6345A09B7965AF762DE4BEFE8BDD249136BF30D9364598D78CF123F17230B0C25DD552F103BEF9A893F75EAD2B0
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1432044402
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)

    
por Machavity 19.05.2015 / 16:24

1 resposta

6

Parece que o servidor da web no link não inclui o certificado intermediário.

Isso parece ser um erro de configuração da parte deles. É definitivamente algo que pode ser esperado para causar problemas de compatibilidade, como você é realmente só deveria confiar em clientes com os certificados de raiz no lugar de antemão.

Veja a cadeia de certificados, por exemplo, no resultado do SSLLabs : (Você Também notarei que há muitos outros problemas com sua configuração de SSL.)

1   Sent by server  facts.dohrn.com 
Fingerprint: 823e3a70f194c646498b2591069b3727ad0014d9 
RSA 2048 bits (e 65537) / SHA256withRSA

2   Extra download  Go Daddy Secure Certificate Authority - G2 
Fingerprint: 27ac9369faf25207bb2627cefaccbe4ef9c319b8 
RSA 2048 bits (e 65537) / SHA256withRSA

3   In trust store  Go Daddy Root Certificate Authority - G2   Self-signed  
Fingerprint: 47beabc922eae80e78783462a79f45c254fde68b 
RSA 2048 bits (e 65537) / SHA256withRSA


Eu diria que suas principais opções são tentar convencer o provedor de serviços a consertar seu serviço ou contornar o problema, fornecendo ao cliente os certificados que seu servidor deveria fornecer.

    
por 19.05.2015 / 19:11