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.crt
ist das Zertifikat, das mir von der Signaturbehörde gegeben wurde, und wo bundle.crt
ist 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-certificates
Befehl 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.
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).
openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM
.
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).
AlphaSSL CA - SHA256 - G2
. Ihre Kette liefert jedoch ZwischenprodukteAlphaSSL CA - G2
. Ich glaube, Sie müssen das aktuelle Zwischenzertifikat (AlphaSSL CA - G2
) löschen und durch das mit dem Fingerabdruckae:bf:32:c3:c8:32:c7:d7...
(AlphaSSL CA - SHA256 - G2
) ersetzen . Sie müssen auch nicht sendenGlobalSign Root CA
. Der Client muss sein Vertrauen (oder auf der Zwischenstufe) verwurzeln.