Ist eine Validierung der CN/Hostname-Verifizierung anhand eines SSL-Zertifikats in OpenSSL erforderlich und warum?

Ist eine Validierung der CN/Hostname-Verifizierung anhand eines SSL-Zertifikats in OpenSSL erforderlich und warum?

Angesichts des Vorhandenseins von „Vertrauenszertifikaten“ und anderen Attributen … wie wichtig ist dies?

Implementiert OpenSSL es jetzt und wenn nicht, warum implementiert OpenSSL es nicht?

Antwort1

Bei den meisten Protokollen/Anwendungen, die SSL verwenden, muss der Client SOWOHL überprüfen, dass (1) der Server ein gültiges Zertifikat vorlegt, also eines, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde und nicht abgelaufen, widerrufen oder manipuliert ist, ALS AUCH (2) dass dieses Zertifikat für den gewünschten Server ist, nicht für einen anderen, zu dem Ihre Verbindung versehentlich oder durch einen vorsätzlichen Angriff weitergeleitet wurde. (Es gibt seltene Fälle, in denen Sie keine Serverauthentifizierung, sondern nur Vertraulichkeit benötigen, aber dann sind Sie wahrscheinlich besser dran, wenn Sie die Cipher Suites „anon“ oder „aNULL“ verwenden, die ausdrücklich keine Authentifizierung durchführen.)

OpenSSL bietet bisher (1), aber nicht (2), und unterstützt normalerweise nur CA-Root-Zertifikate in seinem Truststore; eine CA-Root kann für Tausende oder Millionen von Server-Zertifikaten „verantwortlich“ sein, und wenn beispielsweise Verisign Zertifikate an beide ausgestellt hat, bigbank.combedeutet localdiner.comdas nicht, dass ich meine Bigbank-Konten an localdiner geben möchte. Daher muss die Anwendung (2) entweder in einem Verify_Callback oder nach Abschluss des Handshakes, aber vor dem Senden (sensibler) Daten ausführen. Die nächste Hauptversion 1.0.2 soll Verbesserungen der Zertifikatskettenvalidierung enthalten und ich glaube, in zumindest einigen Fällen auch der Namensvalidierung. Hinweis: Für HTTPS mit RFC 2818 oder andere TLS-basierte Protokolle mit RFC 6125 müssen Sie sowohl CommonName im Betreff als auch die Erweiterung SubjectAlternativeNames überprüfen, falls vorhanden.

Ich weiß nichtWarum OpenSSL(und davor SSLeay)tut es nichtschon. Man könnte sagen, dass einige ungewöhnliche SSL/TLS-Anwendungen etwas anderes als das Standard-CN/SAN benötigen – aber es gibt andere Bereiche, in denen OpenSSL den üblichen Fall behandelt und Rückrufe oder Optionen für die seltenen Fälle bereitstellt. Ich denke, es war wahrscheinlich einfach zu viel Arbeit und nicht genug Leute (bis vor kurzem).

verwandte Informationen