{"id":843,"date":"2017-11-04T14:17:53","date_gmt":"2017-11-04T13:17:53","guid":{"rendered":"https:\/\/www.krombusch.de\/?p=843"},"modified":"2021-11-01T12:36:21","modified_gmt":"2021-11-01T11:36:21","slug":"formatfrage-libressl-und-openssl","status":"publish","type":"post","link":"https:\/\/www.krombusch.de\/?p=843","title":{"rendered":"Formatfrage: LibreSSL und OpenSSL"},"content":{"rendered":"<p>VPN-Zugriff von Mac OS High Sierra auf zwei Sophos UTM 9 &#8211; Boxen: Auf Box 1 klappt der VPN-SSL-Zugriff ohne Probleme. Das Zertifikat von Box 2 lehnt Tunnelblick mit einem &#8222;VERIFY ERROR&#8220; ab. Suche und L\u00f6sung waren zwar nicht schwer, aber verstanden habe ich es nicht so recht.<\/p>\n<p><!--more--><\/p>\n<p>Zum Hintergrund: Von einer Sophos UTM (fr\u00fcher Astaro) l\u00e4dt man sich aus dem User Portal am Mac seine *.ovpn-Datei herunter und zieht sie ins Tunnelblick Fenster. Tunnelblick als Beispiel f\u00fcr einen VPN-GUI-Client. Eine ovpn-Datei enth\u00e4lt entweder eine Config mit den Zertifikaten oder auch die drei *.crt-Dateien einzeln.<\/p>\n<p>Beim Verbinden bekomme ich auf Box 2 beim TLS-Handshake die Meldung:<br \/>\n<em><span class=\"s1\">2017-11-04 12:35:14 us=870806 VERIFY ERROR: depth=0, error=format error in certificate&#8217;s notAfter field: C=de, L=Cologne, O=&#8230;<br \/>\n<\/span><span class=\"s1\">2017-11-04 12:35:14 us=871222 OpenSSL: error:14007086:SSL routines:CONNECT_CR_CERT:certificate verify failed<br \/>\n<\/span><span class=\"s1\">2017-11-04 12:35:14 us=871432 TLS_ERROR: BIO read tls_read_plaintext error<br \/>\n<\/span><span class=\"s1\">2017-11-04 12:35:14 us=871638 TLS Error: TLS object -&gt; incoming plaintext read error<br \/>\n<\/span><span class=\"s1\">2017-11-04 12:35:14 us=871843 TLS Error: TLS handshake failed<br \/>\n<\/span><\/em><span class=\"s1\"><em>2017-11-04 12:35:14 us=872075 Fatal TLS error (check_tls_errors_co), restarting<\/em><br \/>\n<\/span>Und Tunnelblick geht in eine Reconnect-Schleife.<\/p>\n<p>Beanstandet wird scheinbar das &#8222;G\u00fcltig-Bis-Datum&#8220; im Zertifikat. Das sieht im Klartext der Config (kleines Zahnr\u00e4dchen am unteren Fensterrand von Tunnelblick zeigt sie an) aber eigentlich ganz valide aus:<br \/>\n<em><span class=\"s1\">Not After : Sep<span class=\"Apple-converted-space\">\u00a0 <\/span>6 09:36:36 2036 GMT<\/span><\/em><\/p>\n<p>Da Tunnelblick das Datum nicht aus dem Klartext, sondern aus dem Zertifikatsblock selbst liest, kopiere ich dessen Inhalt zwischen<br \/>\n<em><span class=\"s1\">&#8212;&#8211;BEGIN CERTIFICATE&#8212;&#8211;<br \/>\n<\/span><span class=\"s1\">&#8230;<br \/>\n<\/span><span class=\"s1\">&#8212;&#8211;END CERTIFICATE&#8212;&#8211;<br \/>\n<\/span><\/em><span class=\"s1\">in eine Textdatei ca.crt<\/span><\/p>\n<p>Die kann man sich in der Mac OS Schl\u00fcsselbundverwaltung oder auch gleich im Terminal anzeigen lassen:<br \/>\n<em>bjoern$\u00a0<span class=\"s1\">openssl x509 -in ca.crt -noout -dates<br \/>\n<\/span><span class=\"s1\">notBefore=Apr 22 09:36:36 2009 GMT<br \/>\n<\/span><span class=\"s1\">notAfter=Sep<span class=\"Apple-converted-space\">\u00a0 <\/span>6 09:36:36 2036 GMT<\/span><\/em><\/p>\n<p>Auf einer tieferen Ebene kommen diese Datumswerte raus:<br \/>\n<em>bjoern$\u00a0<span class=\"s1\">openssl asn1parse -in ca.crt | grep \u201eTIME\u201c<br \/>\n<\/span><span class=\"s1\">193:d=3<span class=\"Apple-converted-space\">\u00a0 <\/span>hl=2 l=<span class=\"Apple-converted-space\">\u00a0 <\/span>13 prim: UTCTIME <span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>:090422093636Z<br \/>\n<\/span><span class=\"s1\">208:d=3<span class=\"Apple-converted-space\">\u00a0 <\/span>hl=2 l=<span class=\"Apple-converted-space\">\u00a0 <\/span>13 prim: UTCTIME <span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span>:360906093636Z<\/span><\/em><\/p>\n<p>Zuerst dachte ich, das zweistellige Jahr am Anfang h\u00e4tte das falsche Format, aber das scheint zum Standard zu geh\u00f6ren: \u00c4hnlich wie bei zweistelligen Jahreszahlen zum Jahr-2000-Wechsel interpretiert man das Jahrhundert laut\u00a0<a href=\"https:\/\/datatracker.ietf.org\/doc\/rfc3280\/?include_text=1\" target=\"_blank\" rel=\"noopener\">RFC3280<\/a> Punkt 4.1.2.5 vor\/ab 2050 entsprechend dazu: &#8222;<span class=\"s1\">Where YY is less than 50, the year SHALL be interpreted as 20YY&#8220;<br \/>\n<\/span>Au\u00dferdem verwendet das Zertifikat von Box 1 &#8211; korrekterweise &#8211; auch so ein Datumsformat.<\/p>\n<p>Das Absurde aber: Openssl gibt mir &#8211; anders als Tunnelblick &#8211; im Terminal auch keinen Fehler aus.<br \/>\n<em>bjoern$ openssl verify ca.crt<\/em><br \/>\n<em><span class=\"s1\">ca.crt: C = de, L = Cologne, O = \u2026<br \/>\n<\/span><span class=\"s1\">error 18 at 0 depth lookup:self signed certificate<br \/>\n<\/span><strong><span class=\"s1\">OK<br \/>\n<\/span><\/strong><\/em>(Gut, beide Zertifikate sind selbst signiert. Halte ich in diesen Kontext bis auf die fehlende Revocation von selfsigned certificates f\u00fcr unbedenklich.)<\/p>\n<p>Aber es f\u00e4llt auf, dass sich die von Mac OS verwendete SSL-Bibliothek von der mit Tunnelblick gelieferten unterscheidet.<\/p>\n<p><em>bjoern$: openssl version<\/em><br \/>\n<em><span class=\"s1\">LibreSSL 2.2.7<\/span><\/em><\/p>\n<p><a href=\"https:\/\/www.krombusch.de\/?attachment_id=845\" rel=\"attachment wp-att-845\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-845\" src=\"https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version.png\" alt=\"\" width=\"335\" height=\"106\" srcset=\"https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version.png 1140w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version-300x95.png 300w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version-768x244.png 768w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version-1024x325.png 1024w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2017\/11\/ssl-version-624x198.png 624w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/a><\/p>\n<p>Irgendwas scheint sich zwischen der von Apple verwendeten 2.2.7 und der 2.5.5 von Tunnelblick getan zu haben. F\u00fcr meinen Problemfall habe ich bei Google aber nichts gefunden.<br \/>\nEin generelles Umstellen der OpenVPN-Version in Tunnelblick von &#8222;LibreSSL&#8220; auf &#8222;OpenSSL&#8220; brachte auch Box 2 nicht mehr in Schwierigkeiten.<\/p>\n<p>Aber bedeutet das, die Version LibreSSL 2.5.5 w\u00e4re buggy? Wahrscheinlich nicht, denn dann h\u00e4tten beide Zugriffe nicht funktionieren d\u00fcrfen. M\u00f6glicherweise spielt der Signatur-Algorithmus mit rein, denn Box 1 verwendet den &#8211; mittlerweile auch veralteten &#8211; SHA1 und die Problembox 2 sogar was Schlimmeres. Vielleicht kann das jemand bei sich nachvollziehen. Oder vielleicht besser nicht: W\u00e4re schon l\u00e4ngst Zeit f\u00fcr ein Update auf mindestens SHA256 gewesen! Man muss dazu leider so viele Sachen anfassen. Steht als n\u00e4chstes an!<\/p>\n<p>Links:<br \/>\nhttps:\/\/www.heise.de\/security\/artikel\/Kryptographie-in-der-IT-Empfehlungen-zu-Verschluesselung-und-Verfahren-3221002.html<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>VPN-Zugriff von Mac OS High Sierra auf zwei Sophos UTM 9 &#8211; Boxen: Auf Box 1 klappt der VPN-SSL-Zugriff ohne [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-843","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=843"}],"version-history":[{"count":6,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/843\/revisions"}],"predecessor-version":[{"id":850,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/843\/revisions\/850"}],"wp:attachment":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}