"SSL: CERTIFICATE_VERIFY_FAILED" con i miei certificati

1

Due siti. Solo uno funziona.

Ho due siti abilitati a SSL in esecuzione su Heroku, che forniscono entrambi API. Ho acquistato i certificati SSL da diverse fonti.

Quando utilizzo Ruby e Python per effettuare alcune chiamate POST all'API del sito n. 1, tutto funziona correttamente.

Tuttavia, quando uso Ruby e Python per effettuare alcune chiamate POST all'API del sito n. 2, ottengo gli errori di SSL: certificate verify failed . (Anche se tutto sembra a posto quando accedo al sito in Chrome)

Errore di Ruby per il sito 2:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Errore Python per il sito 2:
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

Il certificato "Domain Validated" è sufficiente?

Vorrei che altri utenti potessero accedere all'API del sito n. 2, senza dover hackerare questo errore. Ma non sono sicuro di quale sia il problema - è che il mio certificato sia intrinsecamente insicuro (è solo convalidato dal dominio, ma credo che il certificato n. 1 sia anche solo convalidato dal dominio, quindi non sono sicuro del motivo per cui questo funziona correttamente) , o è possibile che ho sbagliato qualcosa durante l'impostazione di SSL per il sito n. 2 (quindi posso risolvere il problema senza acquistare un altro certificato)?

Se devo acquistare un altro certificato, devo assicurarmi che si tratti di un certificato OV o EV? O un certificato DV da una determinata fonte funziona? (Non ho ancora creato una società ufficiale, quindi preferirei un certificato DV per ora, anche se so che è meno attendibile.)

(Ho cercato su Google questi errori, ma tutte le soluzioni sembrano suggerire qualche tipo di problema locale di Ruby / Python, mentre penso di avere un problema con il certificato.)

Maggiori dettagli

Maggiori dettagli sul certificato problematico:

  • Emesso da COMODO RSA Secure Server CA di convalida del dominio.
  • Il "nome comune" è in realtà diverso dal dominio a cui sto tentando di accedere. (perché questo è inteso per essere un certificato multi-dominio)
  • Se visualizzo i dettagli del certificato in Chrome, Chrome dice Valid Certificate: The connection to this site is using a valid, trusted server certificate.
  • ssllabs.com ( link ) assegna al dominio 3 voti A +.
posta haelcuoe 08.11.2016 - 05:38
fonte

1 risposta

1

Non ho problemi ad accedere a www.hybridml.com con python e richiede la libreria. Testato con 2.7.6, 2.7.12 e 3.5.2. Anche il rapporto SSLLab sembra a posto, cioè non ci sono certificati di catena mancanti e le corrispondenze dell'oggetto. E i browser funzionano bene.

Questo insieme suggerisce che hai qualcosa che sta intercettando la connessione SSL. Tale uomo SSL nel mezzo risulta in un nuovo certificato per il sito di destinazione firmato dalla CA del software di intercettazione. Poiché il browser non emette alcun avvertimento, si tratta probabilmente di intercettazioni legali, in genere eseguite da un firewall aziendale, ma anche da varie soluzioni antivirus per desktop. Potrebbe anche essere che il browser e il proxy si stiano connettendo in modo diverso all'obiettivo, ovvero uno tramite un proxy e l'altro no. Tali differenze possono verificarsi perché python e ruby non condividono l'elenco di CA attendibile né le impostazioni del proxy con il browser.

Ti suggerisco di controllare la catena di certificati all'interno del browser e vedere se in realtà ciò si traduce nella CA Comodo prevista come root o qualcos'altro, ovvero la CA dall'uomo nel mezzo.

    
risposta data 08.11.2016 - 08:22
fonte

Leggi altre domande sui tag