Errore SSL: impossibile ottenere il certificato dell'emittente locale


95

Ho problemi a configurare SSL su un server Debian 6.0 a 32 bit. Sono relativamente nuovo con SSL, quindi per favore abbi pazienza. Includo quante più informazioni possibile.
Nota: il vero nome di dominio è stato modificato per proteggere l'identità e l'integrità del server.

Configurazione

Il server è in esecuzione utilizzando nginx. È configurato come segue:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

Ho incatenato il mio certificato utilizzando il metodo descritto qui

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

dov'è mysite.ca.crtil certificato che mi è stato fornito dall'autorità di firma e il bundle.crtcertificato CA mi è stato inviato anche dalla mia autorità di firma. Il problema è che non ho acquistato il certificato SSL direttamente da GlobalSign, ma tramite il mio provider di hosting, Singlehop.

Test

Il certificato viene convalidato correttamente su Safari e Chrome, ma non su Firefox. La ricerca iniziale ha rivelato che potrebbe essere un problema con la CA.

Ho esplorato la risposta a una domanda simile , ma non sono riuscito a trovare una soluzione, poiché non capisco bene quale sia lo scopo di ciascun certificato.

Ho usato s_client di openssl per testare la connessione e ho ricevuto un output che sembra indicare lo stesso problema della domanda simile . L'errore è il seguente:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Un dettaglio completo della risposta di openssl (con certificati e informazioni non necessarie troncate) può essere trovato qui .

Vedo anche l'avviso:

No client certificate CA names sent

È possibile che questo sia il problema? Come posso assicurarmi che nginx invii questi nomi CA?

Tentativi di risolvere il problema

Ho tentato di risolvere il problema scaricando la CA radice direttamente da GlobalSign, ma ho ricevuto lo stesso errore. Ho aggiornato le CA di root sul mio server Debian usando il update-ca-certificatescomando, ma non è cambiato nulla. Ciò è probabile perché la CA inviata dal mio provider era corretta, quindi il certificato è stato concatenato due volte, il che non aiuta.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Prossimi passi

Per favore fatemi sapere se c'è qualcosa che posso provare, o se ho semplicemente configurato tutto in modo errato.


10
Il tuo certificato di dominio è firmato dall'emittente AlphaSSL CA - SHA256 - G2. Tuttavia, la tua catena fornisce intermedio AlphaSSL CA - G2. Credo che sia necessario eliminare il certificato intermedio corrente ( AlphaSSL CA - G2) e sostituirlo con quello con impronta digitale ae:bf:32:c3:c8:32:c7:d7...( AlphaSSL CA - SHA256 - G2). Inoltre, non è necessario inviare GlobalSign Root CA. Il cliente deve radicare la sua fiducia nel proprio (o nell'intermedio).
jww

6
Sarai in grado di testarlo localmente con OpenSSL. Prova openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>. Il comando dovrebbe essere completato con un file Verify OK (0)o simile. Quando si ottiene il Verify OK (0), il server è configurato correttamente (per questo problema).
jww

6
Quando scarichi quel nuovo intermedio, dovrai convertirlo in PEM con openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM.
jww

Bellissimo. Credo che funzioni adesso. Per qualche motivo pensavo di aver provato a ottenere quello SHA 256, ma devo essere riuscito a convertirlo correttamente. Grazie, sinceramente.
Jamie Counsell

1
sì, la cosa da cercare sono le coppie Soggetto-Emittente che tornano a una radice o CA. OpenSSL li visualizza come i:e s:sotto s_client. Dopo aver ottenuto i certificati necessari, concateli tutti tranne la radice. Poiché sono concatenati, devono essere in formato PEM. L'URL è stato utile. Sta invecchiando cercando di aiutare le persone che non forniscono informazioni in modo che possiamo guardarle localmente con s_client. (Se non avessi fornito l'URL, avrei votato per chiudere).
jww

Risposte:



-1

Se sei un utente Linux, aggiorna il nodo a una versione successiva eseguendo

sudo apt update

 sudo apt install build-essential checkinstall libssl-dev

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash

nvm --version

nvm ls

nvm ls-remote

nvm install [version.number]

Questo dovrebbe risolvere il tuo problema

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.