Über Smarthost TLS Fingerprints

548
xpt

Wie werden die Fingerabdrücke bestimmt? Sind sie nur von dem Smarthost oder dem Kunden abhängig?

Ich habe meinen Gmail-Smarthost-Fingerabdruck vor einiger Zeit in meinem alten Ubuntu konfiguriert, und er hat gut funktioniert. Bei der Neukonfiguration in meinem neuen Ubuntu 18.04 stellte sich jedoch heraus, dass die alte Einstellung nicht mehr funktioniert.

Weil ich nicht meinen Gmail-Smarthost verwendet habe, sondern meinen ISP, also weiß ich nicht, wann er kaputt geht. Meine Frage ist nun also, ob es kaputt ist, weil Gmail seinen Smarthost-Fingerabdruck geändert hat (sehr unwahrscheinlich), oder dass die SmartHostost-Fingerabdrücke zwischen den Maschinen unterschiedlich sind. Das heißt, ich kann nicht blind kopieren, was funktioniert, auch nicht auf das neue Betriebssystem auf demselben Computer, oder?

Ich habe auch den vorherigen Weg ausprobiert, um Fingerabdrücke wie in dem Artikel zu bekommen, aber es funktioniert jetzt nicht für mich. Was ist der richtige Weg, um Smarthost-Fingerabdrücke zu bekommen?

Vielen Dank.

2
SSL-Fingerabdrücke bleiben für immer unverändert. AnFi vor 6 Jahren 0

1 Antwort auf die Frage

4
grawity

Es gibt keinen "Smarthost-Fingerabdruck". Hierbei handelt es sich um Fingerabdrücke für TLS-Zertifikate, die in diesem Zusammenhang zufällig zu SMTP-Relay-Servern (Smarthost-Servern) gehören - aber hier gilt alles für IMAPS, HTTPS, FTPS ... alles, was TLS verwendet.

Fingerabdrücke für TLS-Zertifikate hängen in der Regel überhaupt nicht vom Client ab: Sie sind ein SHA1- (oder SHA256-) Hash des Serverzertifikats, und Server verwenden im Allgemeinen das gleiche Zertifikat für alle Benutzer.

Eine Ausnahme könnten Server hinter einem Lastenausgleich sein: Große Sites verfügen möglicherweise über mehrere Server hinter einem einzigen Namen, und obwohl sie sich möglicherweise ein Zertifikat teilen, ist dies bei weitem nicht garantiert - sie können auch problemlos 20 oder 50 Zertifikate gleichzeitig verwenden.

Und selbst für denselben Server ist es sehr wahrscheinlich, dass sich der Fingerabdruck ändert. Er ändert sich bei jeder Erneuerung des Zertifikats (weil sich das Gültigkeitsdatum ändert) oder wird aus einem anderen Grund erneut ausgestellt (neuer privater Schlüssel oder neuer Aussteller). oder neuer Domainname ...)

Früher wurden Zertifikate in der Vergangenheit für 3–5 Jahre ausgestellt (und manuell installiert), die neue Praxis besteht jedoch darin, den Prozess zu automatisieren und kurzlebige Zertifikate zu verwenden, normalerweise 90 oder sogar 45 Tage. Google macht dies seit ca. 2014, und so funktioniert Let's Encrypt seit dem ersten Tag. (Nach CA / B-Forum-Regeln sind selbst "langlebige" Standard "TLS-Zertifikate jetzt auf 2 Jahre begrenzt.)

Daher ist die tls_fingerprintOption nur dann nützlich, wenn Sie genau wissen , wann sich das Zertifikat ändern soll (z. B. wenn Sie die Person sind, die es ändert). Andernfalls wird die Konfiguration alle ein bis zwei Monate unterbrochen.


In der Praxis aktualisieren zumindest Linux-Distributionen ihre CA-Zertifikatpakete relativ schnell. (Ich meine, wenn nicht, sind Sie sicher, dass Sie dieses Betriebssystem überhaupt auf Ihrem Computer ausführen möchten?)

Ich würde also sagen, dass der Artikel versucht, seine Leser mit den falschen Problemen zu erschrecken. Ein viel größeres Anliegen ist, dass die CA-Zertifizierungspakete häufig ein paar zwielichtige, staatlich kontrollierte Zertifizierungsstellen aus verschiedenen Ländern enthalten.

Alternative 1: Wenn Sie möchten, können Sie einen benutzerdefinierten tls_trust_file Code erstellen, der nur die einzige Zertifizierungsstelle enthält, die der Provider verwendet: Geben Sie msmtp an, nur DigiCert zu vertrauen und sonst nichts. Dies ist eine gebräuchliche Methode, die als "CA-Pinning" bezeichnet wird. Es besteht jedoch immer noch die Möglichkeit eines Bruchs, da Server-Administratoren frei wählen können, mit welchen CAs sie Geschäfte tätigen.

Alternative 2: Einige Programme unterstützen einen anderen Fingerabdrucktyp - SPKI-Fingerabdrücke (Hashes von subjectPublicKeyInfo). Diese stellen nur das rohe Schlüsselpaar dar und enthalten keine zusätzlichen Zertifikatmetadaten. Ein Server kann sein Zertifikat regelmäßig erneuern, wobei dasselbe Schlüsselpaar und somit derselbe SPKI-Fingerabdruck beibehalten wird.

(Selbst wenn Ihr Client SPKI-Fingerprinting unterstützt (dies gilt jedoch nicht für msmtp), hat dies nur dann einen Vorteil, wenn Sie wissen, dass die Server-Administratoren ihre Zertifikate auf diese Weise erneuern. Meistens nicht.)

Vielen Dank. Ich sollte wirklich alles über die Konfiguration meines mSMTP überdenken, aber das ist ein anderes Problem. Würden Sie auch meine hinzugefügte Frage beantworten, "_ wie man Fingerabdrücke für TLS-Zertifikate erhält" _? xpt vor 6 Jahren 0
Für SMTP hat der Artikel, mit dem Sie verlinkt haben, einen guten Befehl (`msmtp --serverinfo ...`). Bei anderen Protokollen würde ich sagen, dass er einen eigenen Thread verdient. grawity vor 6 Jahren 0