Wie überprüfe ich das TLS-Zertifikat des Remote-SMTP-Servers?

63

Auf Windows Server 2008 wird ein Exchange 2007-Server ausgeführt. Unser Client verwendet den Mailserver eines anderen Anbieters. Ihre Sicherheitsrichtlinien erfordern, dass wir erzwungenes TLS verwenden. Dies hat bis vor kurzem gut funktioniert.

Wenn Exchange nun versucht, E-Mails an den Server des Clients zuzustellen, wird Folgendes protokolliert:

Eine sichere Verbindung zur domänengesicherten Domäne 'ourclient.com' auf dem Connector 'Externe Standardmail' konnte nicht hergestellt werden, da die Überprüfung des TLS-Zertifikats (Transport Layer Security) für ourclient.com mit dem Status 'UntrustedRoot' fehlgeschlagen ist. Wenden Sie sich an den Administrator von ourclient.com, um das Problem zu beheben, oder entfernen Sie die Domäne aus der domänengesicherten Liste.

Durch das Entfernen von ourclient.com aus der TLSSendDomainSecureList werden Nachrichten mit opportunistischem TLS erfolgreich zugestellt. Dies ist jedoch bestenfalls eine vorübergehende Problemumgehung.

Der Kunde ist ein extrem großes, sicherheitsrelevantes internationales Unternehmen. Unser dortiger IT-Ansprechpartner gibt an, keine Änderungen an seinem TLS-Zertifikat zu kennen. Ich habe ihn wiederholt gebeten, die Behörde zu identifizieren, die das Zertifikat erstellt hat, damit ich den Validierungsfehler beheben kann. Bisher konnte er jedoch keine Antwort geben. Soweit ich weiß, hätte unser Kunde sein gültiges TLS-Zertifikat durch ein Zertifikat einer internen Zertifizierungsstelle ersetzen können.

Kennt jemand eine Möglichkeit, das TLS-Zertifikat eines Remote-SMTP-Servers manuell zu überprüfen, wie dies für das Zertifikat eines Remote-HTTPS-Servers in einem Webbrowser möglich ist? Es kann sehr hilfreich sein, festzustellen, wer das Zertifikat ausgestellt hat, und diese Informationen mit der Liste der vertrauenswürdigen Stammzertifikate auf unserem Exchange-Server zu vergleichen.

Skyhawk
quelle

Antworten:

100

Sie können OpenSSL verwenden. Wenn Sie das Zertifikat mit überprüfen müssen STARTTLS, dann tun Sie es einfach

openssl s_client -connect mail.example.com:25 -starttls smtp

oder für einen sicheren Standard-SMTP-Port:

openssl s_client -connect mail.example.com:465
Dan Andreatta
quelle
Schön. Ähnliche Validierungsfehler in OpenSSL, aber viel detaillierter. Jetzt wissen wir, dass das Problem nicht auf unseren Mailserver beschränkt ist.
Skyhawk
1
@Miles: Wenn Sie dies unter Windows versuchen, vergessen Sie nicht, dass openssldie Verwendung des Windows-Zertifikatspeichers nicht unterstützt wird, sodass die Überprüfung immer fehlschlägt.
Grawity
3
Wie kann ich das Ablaufdatum des Serverzertifikats sehen?
Nimrodm
9
@nimrodm: Pipe das Zertifikat an "openssl x509 -text"
Dan Andreatta
2
@DanAndreatta @nimrodm Oder leiten Sie es an openssl x509 -noout -datesfür kürzere Ausgabe.
Skippy le Grand Gourou
9

Ich weiß, dass dies eine alte Frage ist, aber auch heute noch eine wichtige Frage für Administratoren, die die Gültigkeit des SSL-Zertifikats auf ihren E-Mail-Servern bestätigen möchten.

Sie können https://www.checktls.com besuchen und den Test kostenlos ausführen.

Ketan Patel
quelle
Dies funktionierte für mich, war besser lesbar als die Befehlszeile
marijnz0r
1
Ich habe Probleme, den Test auf der Website zu finden. Irgendwelche Hinweise?
Zero3
1
Im Bereich 'Internet Secure Email is Easy' befindet sich ein Eingabefeld mit der Schaltfläche 'CheckTLS' in schwarzer Farbe.
Ketan Patel
@KetanPatel Aaaand ... Wo finde ich den Abschnitt "Internet Secure Email is Easy"?
Zero3
Schade, das scheint die Domain nach den in DNS aufgelisteten SMTP-Servern zu durchsuchen und diese abzufragen, aber ich wollte den Server direkt überprüfen.
kerridge0
4

Wenn Sie nicht über OpenSSL verfügen, können Sie auch dieses Python-Snippet verwenden:

import smtplib
import ssl

connection = smtplib.SMTP() 
connection.connect('[hostname].')
connection.starttls()
print ssl.DER_cert_to_PEM_cert(connection.sock.getpeercert(binary_form=True))

Dabei ist [Hostname] der Server.

Quelle: https://support.google.com/a/answer/6180220

Dadurch wird die OpenSSL-Bibliothek für Sie abgerufen, was die Installation etwas vereinfacht.

browly
quelle
In der Dokumentation zum Python ssl-Modul heißt es : "Dieses Modul verwendet die OpenSSL-Bibliothek." Diese Antwort ist also etwas irreführend in Bezug auf das, was gerade passiert.
19.
@fbmd Danke für das Feedback. Ist diese Bearbeitung besser (siehe letzten Satz)?
Browly
Ja das ist besser
fbmd