OpenVPN: Selbstsigniertes Zertifikat in Kette


9

Ich versuche sehr erfolglos, TunnelBlick(einen OS / X OpenVPN 2.2.1-Client, der als gut bekannt ist) eine Verbindung über Zertifikate zu verwenden. Hier ist die (bereinigte) Fehlermeldung, die ich erhalte:

2012-01-11 11:18:26 TLS: Erstes Paket von **. **. **. **: 1194, sid = 17a4a801 5012e004
2012-01-11 11:18:26 FEHLER PRÜFEN: Tiefe = 1, Fehler = selbstsigniertes Zertifikat in der Zertifikatkette: / C = US / ST = ** / L = ** / O = ** / CN = ** / emailAddress = **
2012-01-11 11:18:26 TLS_ERROR: BIO-Lesefehler tls_read_plaintext: Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatüberprüfung fehlgeschlagen
2012-01-11 11:18:26 TLS-Fehler: TLS-Objekt -> eingehender Klartext-Lesefehler
2012-01-11 11:18:26 TLS-Fehler: TLS-Handshake fehlgeschlagen
2012-01-11 11:18:26 TCP / UDP: Socket schließen

Hier ist das Problem. Ich erzeugen ein CSR mich dieses Zertifikat zu verlangen, die mit ca.crt mir Datei von der anderen Seite (in der Tat, sie haben sie zweimal nur um sicher zu machen).

Die relevanten Einträge in der Client-Konfiguration sind:

ca   ca.crt
cert my.crt
key  my.key

und außerdem ... kann ich die Schlüssel folgendermaßen überprüfen:

openssl verify -CAfile ca.crt my.crt 
my.crt: OK

Okay, jetzt bin ich gründlich verwirrt und ratlos. Zu diesem Zeitpunkt weiß ich , dass die CSR und der Schlüssel mit der richtigen CSR generiert wurden. In der Tat ist hier genau der Befehl, der es getan hat:

openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key

Ich wusste auch Folgendes:

openssl x509 -subject -issuer -noout -in ca.crt

...

(blinken!)

Habe ich es gerade gefunden ?

Die Ausgabe dieses Befehls sieht folgendermaßen aus: (etwas bearbeitet)

Betreff = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = **
Emittent = (das gleiche)

wohingegen in der Fehlermeldung von OpenVPN das ST = nicht genau dasselbe ist:

FEHLER PRÜFEN: Tiefe = 1, Fehler = selbstsigniertes Zertifikat in der Zertifikatskette: / C = US / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **

"VA" ist nicht genau gleich "Virginia".


2
Versuchen Sie es openssl s_client -connect host:port -showcertsmit und vergleichen Sie den Fingerabdruck des empfangenen Zertifikats mit openssl x509 -noout -text -in ca.crt.
Shane Madden

Antworten:


7

Nur um diesen Thread vollständig zu schließen: Das war in der Tat das Problem. Das "ca.crt", das ich erhalten hatte ("Virginia"), war NICHT das, das mein Kollege benutzte ("VA"), und keiner von uns bemerkte es zu diesem Zeitpunkt.

Also ... im Grunde (und nur für Laien) versuchte VPN, einen Spaziergang durch die Autoritätskette zu machen, um nach dem ungefähren Wert zu suchen, den es erwartet hatte, aber es tat es nie (weil es nicht da war).

Und dies ist eine dieser wunderbaren Botschaften, für die Kryptosysteme so bekannt sind: völlig genau und doch für Uneingeweihte völlig mysteriös. (Und um fair zu sein, Kryptosysteme geben keine Informationen über irgendetwas preis, da sie annehmen, dass die Person, mit der sie sprechen, sicherlich böse Eva ist , nicht nette Alice oder Bob.)


Um fair zu sein, ich bin nicht davon überzeugt, dass dies irgendetwas mit der CA-Kette zu tun hat und mehr mit der Tatsache, dass es sich in erster Linie um eine andere CA handelte und daher automatisch nicht vertrauenswürdig war. OpenSSL muss nicht viel spazieren gehen. Vielleicht hast du das aber so gemeint.
Eltern
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.