SSL-Fehler: Lokales Ausstellerzertifikat kann nicht abgerufen werden

94

Ich habe Probleme beim Konfigurieren von SSL auf einem Debian 6.0 32-Bit-Server. Ich bin relativ neu mit SSL, bitte nehmen Sie Kontakt mit mir auf. Ich füge so viele Informationen wie möglich hinzu.
Hinweis: Der wahre Domänenname wurde geändert, um die Identität und Integrität des Servers zu schützen.

Aufbau

Der Server wird mit nginx ausgeführt. Es ist wie folgt konfiguriert:

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;

Ich habe mein Zertifikat mit der hier beschriebenen Methode verkettet

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

Wo mysite.ca.crtist das Zertifikat, das mir von der Signaturbehörde gegeben wurde, und wo bundle.crtist das CA-Zertifikat, das mir auch von meiner Signaturbehörde gesendet wurde? Das Problem ist, dass ich das SSL-Zertifikat nicht direkt von GlobalSign gekauft habe, sondern über meinen Hosting-Anbieter Singlehop.

Testen

Das Zertifikat wird in Safari und Chrome ordnungsgemäß validiert, nicht jedoch in Firefox. Die erste Suche ergab, dass möglicherweise ein Problem mit der Zertifizierungsstelle vorliegt.

Ich habe die Antwort auf eine ähnliche Frage untersucht , konnte jedoch keine Lösung finden, da ich nicht wirklich verstehe, welchen Zweck jedes Zertifikat erfüllt.

Ich habe den s_client von openssl verwendet, um die Verbindung zu testen, und eine Ausgabe erhalten, die auf dasselbe Problem wie die ähnliche Frage hinweist . Der Fehler ist wie folgt:

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

Eine vollständige Beschreibung der Antwort von openssl (mit abgeschnittenen Zertifikaten und unnötigen Informationen) finden Sie hier .

Ich sehe auch die Warnung:

No client certificate CA names sent

Ist es möglich, dass dies das Problem ist? Wie kann ich sicherstellen, dass nginx diese CA-Namen sendet?

Versuche, das Problem zu lösen

Ich habe versucht, das Problem zu lösen, indem ich die Stammzertifizierungsstelle direkt von GlobalSign heruntergeladen habe, aber den gleichen Fehler erhalten. Ich habe die Stammzertifizierungsstellen auf meinem Debian-Server mit dem update-ca-certificatesBefehl aktualisiert , aber nichts hat sich geändert. Dies liegt wahrscheinlich daran, dass die von meinem Anbieter gesendete Zertifizierungsstelle korrekt war, sodass das Zertifikat zweimal verkettet wurde, was nicht hilft.

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

Nächste Schritte

Bitte lassen Sie mich wissen, ob ich etwas ausprobieren kann oder ob ich das Ganze nur falsch konfiguriert habe.

Jamie Counsell
quelle
10
Ihr Domain-Zertifikat ist vom Aussteller signiert AlphaSSL CA - SHA256 - G2. Ihre Kette liefert jedoch Zwischenprodukte AlphaSSL CA - G2. Ich glaube, Sie müssen das aktuelle Zwischenzertifikat ( AlphaSSL CA - G2) löschen und durch das mit dem Fingerabdruck ae:bf:32:c3:c8:32:c7:d7...( AlphaSSL CA - SHA256 - G2) ersetzen . Sie müssen auch nicht senden GlobalSign Root CA. Der Client muss sein Vertrauen (oder auf der Zwischenstufe) verwurzeln.
JWW
6
Sie können dies lokal mit OpenSSL testen. Versuchen Sie es openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>. Der Befehl sollte mit einem Verify OK (0)oder einem ähnlichen Befehl abgeschlossen sein . Wenn Sie das erhalten Verify OK (0), ist der Server ordnungsgemäß konfiguriert (für dieses Problem).
JWW
6
Wenn Sie dieses neue Intermediate herunterladen, müssen Sie es mit in PEM konvertieren openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM.
JWW
Wunderschönen. Ich glaube, es funktioniert jetzt. Aus irgendeinem Grund dachte ich, ich hätte versucht, den SHA 256 zu bekommen, aber ich muss ihn nicht richtig konvertiert haben. Herzlichen Dank.
Jamie Counsell
1
Ja, die Sache, nach der gesucht werden muss, sind die Subject-Issuer-Paare, die zu einer Wurzel oder Zertifizierungsstelle zurückkehren. OpenSSL zeigt sie als i:und s:unter an s_client. Sobald Sie die Zertifikate haben, die Sie benötigen, konzentrieren Sie alle außer der Wurzel. Da sie konzentriert sind, müssen sie im PEM-Format vorliegen. Die URL war hilfreich. Es wird alt und versucht, Leuten zu helfen, die keine Informationen liefern, damit wir sie vor Ort betrachten können s_client. (Wenn Sie die URL nicht angegeben hätten, hätte ich für das Schließen gestimmt).
JWW

Antworten:

-1

Wenn Sie ein Linux-Benutzer sind, aktualisieren Sie den Knoten durch Ausführen auf eine spätere Version

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]

Dies sollte Ihr Problem lösen

Collins Koech
quelle