Seitdem unser E-Mail-Anbieter sein SSL-Zertifikat geändert hat, weigert sich ein POP3-Client auf der Basis von Mono, eine Verbindung zu seinem sicheren POP-Server herzustellen, um E-Mails herunterzuladen. Andere Kunden haben kein Problem. zB Thunderbird und Outlook; Die meisten SSL-Überprüfungssites, die ungerade Ports überprüfen können, außer diesem . Ich habe mit beiden Anbietern zusammengearbeitet, um das Problem zu identifizieren, bin aber mit beiden letztendlich in eine Sackgasse geraten, da ich nicht genug über SSL-Zertifikate weiß, um einen der beiden Anbieter dazu zu bringen, die Fehlerursache zu verstehen.
Während der Untersuchung wurde meine Aufmerksamkeit auf den Unterschied in der Ausgabe der folgenden zwei Befehle gelenkt (ich habe die Zertifikate aus Gründen der Lesbarkeit aus der Ausgabe entfernt):
echo "" | openssl s_client -showcerts -connect pop.gmail.com:995
VERBUNDEN (00000003) Tiefe = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA überprüfen Fehler: num = 20: unable lokale Aussteller - Zertifikat erhalten Rückgabe bestätigen: 0 --- Zertifikatskette 0 s: / C = USA / ST = Kalifornien / L = Bergblick / O = Google Inc / CN = pop.gmail.com i: / C = USA / O = Google Inc. / CN = Google Internet Authority G2 ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- 1 s: / C = US / O = Google Inc. / CN = Google Internet Authority G2 i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = Equifax / OU = Sichere Equifax-Zertifizierungsstelle ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- --- Serverzertifikat subject = / C = USA / ST = Kalifornien / L = Mountain View / O = Google Inc / CN = pop.gmail.com Emittent = / C = US / O = Google Inc. / CN = Google Internet Authority G2 --- Es wurden keine CA-Namen für Client-Zertifikate gesendet --- SSL-Handshake hat 3236 Bytes gelesen und 435 Bytes geschrieben --- Neu, TLSv1 / SSLv3, Verschlüsselung ist RC4-SHA Der öffentliche Schlüssel des Servers ist 2048 Bit Secure Renegotiation wird unterstützt Kompression: KEINE Erweiterung: KEINE SSL-Sitzung: Protokoll: TLSv1 Chiffre: RC4-SHA Sitzungs-ID: 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06 Session-ID-ctx: Hauptschlüssel: DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2 Key-Arg: Keine Startzeit: 1397678434 Zeitlimit: 300 (Sek.) Überprüfen Sie den Rückkehrcode: 20 (lokales Ausstellerzertifikat kann nicht abgerufen werden) --- + OK Gpop bereit für Anfragen vom 69.3.61.10 c13mb42148040pdj ERLEDIGT
echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995
VERBUNDEN (00000003) Tiefe = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA Überprüfungsfehler : num = 19: Selbstsigniertes Zertifikat in der Zertifikatkette Rückgabe bestätigen: 0 --- Zertifikatskette 0 s: / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Siehe www.rapidssl.com/resources/cps (c) 14 / OU = Domain Control Validated - RapidSSL (R) /CN=secure.emailsrvr.com i: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- 1 s: / C = US / O = GeoTrust, Inc./CN=RapidSSL CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- 2 s: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA ----- ZERTIFIKAT BEGINNEN ----- ----- ZERTIFIKAT BEENDEN ----- --- Serverzertifikat subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = Siehe www.rapidssl.com/resources/cps (c) 14 / OU = Domain Control Validated - RapidSSL (R) /CN=secure.emailsrvr.com Emittent = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA --- Es wurden keine CA-Namen für Client-Zertifikate gesendet --- Der SSL-Handshake hat 3876 Bytes gelesen und 319 Bytes geschrieben --- Neu, TLSv1 / SSLv3, Verschlüsselung ist DHE-RSA-AES256-SHA Der öffentliche Schlüssel des Servers ist 2048 Bit Secure Renegotiation wird unterstützt Kompression: KEINE Erweiterung: KEINE SSL-Sitzung: Protokoll: TLSv1 Verschlüsselung: DHE-RSA-AES256-SHA Sitzungs-ID: 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161 Session-ID-ctx: Hauptschlüssel: 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F Key-Arg: Keine Startzeit: 1397678467 Zeitlimit: 300 (Sek.) Überprüfen Sie den Rückkehrcode: 19 (selbstsigniertes Zertifikat in der Zertifikatskette) --- ERLEDIGT
Ich habe versucht zu verstehen, ob dies sinnvoll ist, da -CApath
die Befehle bei Angabe der Option keine Fehler verursachen:
openssl s_client -CApath /etc/ssl/certs -showcerts -connect secure.emailsrvr.com:995
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD, OU = 4159320284, OU = See www.rapidssl.com/resources/cps (c)14, OU = Domain Control Validated - RapidSSL(R), CN = secure.emailsrvr.com
verify return:1
...
openssl s_client -CApath /etc/ssl/certs -showcerts -connect pop.gmail.com:995
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = pop.gmail.com
verify return:1
...
Ich kann die -CAfile
Option auch erfolgreich verwenden, nachdem ich das CAfile-Zertifikat direkt von GeoTrust heruntergeladen habe .
Trotzdem scheint Fog Creek der Meinung zu sein, dass das Problem beim Zertifikat liegt, da sie versucht haben, das Zertifikat Trust
ohne Erfolg in Monos Geschäft zu integrieren. Ich würde mit ihnen nicht einverstanden sein, aber (wie oben erwähnt), während die meisten SSL-Prüfer entweder Port 995 nicht überprüfen oder während des Versuchs erfolgreich waren, fand ich diese Seite , die SSL-Fehler 7 erzeugt.
Interpretiere ich die Ausgabe richtig, um zu bedeuten, dass mit dem Zertifikat nichts falsch ist?
quelle
openssl s_client
es, dass standardmäßig keine Root-Zertifikate importiert werden. Versuchen Sie es stattdessen mit:,openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs
und Sie werden wahrscheinlich feststellen, dass der selbstsignierte Fehler verschwindet.Antworten:
Die Antwort (wie in diesem security.SE-Beitrag erläutert ) lautet, dass die beiden GeoTrust Global CA- Zertifikate, die Sie in der Kette sehen, nicht dasselbe Zertifikat sind, sondern voneinander abgeleitet sind.
Wegen CA Cross-Signing!
Als das GeoTrust Global CA-Zertifikat zum ersten Mal erstellt und signiert wurde, hatte es kein Computer / Browser / keine Anwendung in seinem Trust Store.
Wenn eine andere Zertifizierungsstelle (mit einer bereits vorhandenen Reputation und Distribution) das GeoTrust-Stammzertifizierungsstellenzertifikat signiert, kann das resultierende Zertifikat (das als "Bridge" -Zertifikat bezeichnet wird) jetzt von der zweiten Zertifizierungsstelle überprüft werden, ohne dass das GeoTrust-Stammzertifizierungsstellenzertifikat vorhanden ist vom Kunden ausdrücklich zu vertrauen.
Wenn Google die signierte Version des GeoTrust-Stammzertifizierungsstellenzertifikats vorlegt, kann ein Client, der dem Original nicht vertraut, das Equifax-Zertifizierungsstellenzertifikat nur zum Überprüfen von GeoTrust verwenden. Equifax fungiert also als eine Art "älterer" Vertrauensanker.
quelle
Ich hatte ein ähnliches Problem mit fetchmail, als ich die SSL-Prüfung für aktiviert habe
pop.gmail.com
.Ich habe die Equifax-PEM-Datei heruntergeladen, aber sie funktionierte nicht wie sie ist. Sie musste ausgeführt werden,
c_rehash ssl/certs
wodurch ein symbolischer Link mit einem Hashwert erstellt wurde. Dann funktionierte sie einfach.Alternativ kann der Hash-Wert auch durch Ausführen von ... ermittelt werden.
https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem
quelle
Während des Erzeugens und Konfigurierens von Zertifikaten sollte man auch die
openssl.cnf
Datei (Debian -/etc/ssl/openssl.cnf
) aktualisieren , um den korrekten Pfad, die Zertifikatsnamen usw. anzugeben, dann kann man den Befehl ausführen und sie ohne-CApath
Option überprüfen .Und dementsprechend könnten in diesem Fall auch entfernte Hosts Ihre Zertifikate ordnungsgemäß überprüfen.
Hier ist der entsprechende
openssl.cnf
Abschnitt:quelle
default_ca
Daten in der (beliebigen) Konfigurationsdatei openssl werden nur für das Dienstprogramm 'ca' verwendet, um Zertifikate auszustellen und optional zu widerrufen, niemals zur Überprüfung. Das Ändern des Standard-Bestätigungsspeichers (neben dem Neukompilieren) erfolgt mit erneuten Kompilieren Umgebungsvariablen SSL_CERT_ {FILE, DIR}. (1) verwendet jedoch aufgrund eines Fehlerss_client
nicht die Standardeinstellung (Fix geplant ab Apr. 2015), die (2) dieses OP ohnehin nicht ändern wollte.