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".
openssl s_client -connect host:port -showcerts
mit und vergleichen Sie den Fingerabdruck des empfangenen Zertifikats mitopenssl x509 -noout -text -in ca.crt
.Antworten:
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.)
quelle