Exim: TLS Protokollnamen haben sich geändert

Heute habe ich ein kleines exotisches Problem aus der Exim Welt für Euch, aus dem Ihr auch ohne Exim was lernen könnt.

Exim: TLS Protokollnamen haben sich geändert

Im Exim gibt es die Variable $tls_cipher. In dieser steht das TLS Protokoll drin,  auf welches sich die beteiligten Mailserver geeinigt haben. Rund eine Woche vor Exim 4.93 wurde „noch schnell“ ein Patch zur Standardisierung von SSL/TLS-Protokollnamen in das kommende Release (4.93) eingefügt. Leider war das eher unüberlegt, denn es wurde vergessen diesen Wechsel der Namen im ChangeLog von Exim 4.93 bekannt zu geben.

Nun setzten wir dies tatsächlich in einer ACL ein:

deny condition = ${if eq{${substr_0_7:$tls_cipher}}{TLSv1.2} {0}{1}}

Was dazu geführt hat, daß beim Wechsel auf Fedora 31 und in Folge auf Exim 4.94 die Config anpassen mußten:

deny condition = ${if eq{${substr_0_6:$tls_cipher}}{TLS1.2} {0}{1}}

Da diese Änderung nicht dokumentiert wurde, kam es nach dem Upgrade zu einer Störung des Mailverkehrs. Das möchte man natürlich vermeiden und deswegen liest ein Admin die Changelogs durch. Nutzte hier nur nichts.

Nehmt daher für Eure Projekte zwei Sachen mit:

1. Alles was zu Änderungen von Ausgaben und Variableninhalten führt, muß von Euch kommuniziert werden, sonst => Problem mit Nutzern.

2. „Testen! Testen! Testen!“

 

Firefox, die Fritz!Box & der SEC_ERROR_INADEQUATE_KEY_USAGE Fehler – Teil 2

Heute geht es um die Fortsetzung von Firefox, die Fritz!Box & der SEC_ERROR_INADEQUATE_KEY_USAGE Fehler. Kurzfassung: AVM ist ratlos, aber es gibt Hilfe.

Wie man das Zert der Box erneuert

Von AVM gibt es da leider keine Hilfe, also müssen wir selbst ran. Da ich das ganze Wochenende über mit dem Support gemailt habe, bestätigt sich mal wieder: Am besten man macht es komplett selbst 🙁

Kennt zufällig jemand einen Jail-Break für die Fritz!Box? Nein, dann bauen wir uns jetzt mal ein neues Zert:

Wie vom AVM Support zu hören war, gibt es neuerdings noch andere Domainnamen, daher wäre folgendes ratsam:

Ihr könnt entweder im Browser nachsehen, welche zusätzlichen Domainnamen das Zert enthält, oder Ihr ladet es aus der Box auf Euren PC -> „Zertifikat herunterladen“. Man erhält eine Datei namens „boxcert.cer“. Diese kann man nun mit OpenSSL aufschlüsseln lassen:

openssl x509 -text < boxcert.cer | grep -E „(CN |DNS)“

Beispiel:

Issuer: CN = fritz.box, O = PRIVAT, C = DE, ST = unkown, L = unkown
Subject: CN = fritz.box, O = PRIVAT, C = DE, ST = unkown, L = unkown
DNS:www.fritz.box, DNS:fritz.box, DNS:www.myfritz.box, DNS:myfritz.box, DNS:www.fritz.nas, DNS:fritz.nas

DISCLAIMER:

Das ist für RED HAT basierte Distributionen, bei Debian & Co sieht der Pfad zur openssl.cnf anders aus, falls Eure Distri überhaupt OpenSSL einsetzt. Ferner kann eure Box eine andere IP im LAN haben, als hier angegeben.  Bitte erst herausfinden oder einfach weglassen: (Achtung: Einzeiler!)

openssl req -x509 -nodes -sha256 -newkey rsa:4096 -keyout fritz.box.key -out fritz.box.crt -days 3650 -subj „/CN=fritz.box/O=PRIVAT/C=DE/ST=unkown/L=unkown/“ -reqexts SAN -extensions SAN -reqexts SAN -extensions SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf „\n[SAN]\nsubjectAltName=DNS:www.fritz.box,DNS:fritz.box,DNS:www.myfritz.box,DNS:myfritz.box,DNS:www.fritz.nas,DNS:fritz.nas,IP:192.178.1.1„))

Hinweis: WordPress ist der Meinung doppelte Anführungszeichen in Zitatzeichen umzuwandeln, also nicht 1:1 in die Shell kopieren, das klappt nicht.

Nun haben wir ein Zwischenergebnis mit Key und Cert, brauchen aber noch die PEM für die Box, denn nur das Cert hochladen reicht natürlich nicht 😉

cat fritz.box.key > box.pem
cat fritz.box.crt >> box.pem

Jetzt kann man die „box.pem“ Datei über die oben sichtbare Uploadfunktion in die Box laden, diese verarbeitet es kurz und dann hat man schon sein Problem mit dem doppelten Schlüssel behoben.

Da es keine „Regenerieren“ Funktion gibt, bleibt einem da leider nicht viel anderes übrig. Featurerequest wurde übermittelt 😉

TLS 1.3 am Horizont gesichtet

Seit  dem 15. Januar gibt es openssl1.1.1a für Fedora 29 und Fedora 30 und damit die neue TLS 1.3 Version. Leider bleibt Fedora 28 auf der Strecke, da der Maintainer bei Red Hat keine Lust hat, es auf Fedora 28 zu kompilieren, auch wenn .. Zitat: „nur triviale Anpassungen am Securitypolicyblock nötig wären“.

Das kann ich so natürlich nicht hinnehmen 😀

Wir brauchen :

Einen Exim 4.91 Mailserver und folgende Koji Paketevon Fedora 29 :

-rw-r–r– 1 root root 46760 26. Okt 11:46 crypto-policies-20181026-1.gitd42aaa6.fc29.noarch.rpm
-rw-r–r– 1 root root 625824 15. Jan 15:43 openssl-1.1.1a-1.fc29.x86_64.rpm
-rw-r–r– 1 root root 1395348 15. Jan 15:43 openssl-libs-1.1.1a-1.fc29.x86_64.rpm

dann „dnf update ./*fc29*rpm“  und den Exim danach neustarten und …

[000.099]Connected to server
[000.201]<–220 s113.resellerdesktop.de ESMTP Exim 4.91 Mon, 28 Jan 2019 22:49:51 +0100
[000.201]We are allowed to connect
[000.201] –>EHLO www6.CheckTLS.com
[000.299]<–250-s113.resellerdesktop.de Hello www6.checktls.com [159.89.187.50]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-CHUNKING
250-STARTTLS
250 HELP
[000.300]We can use this server
[000.300]TLS is an option on this server
[000.300] –>STARTTLS
[000.425]<–220 TLS go ahead
[000.425]STARTTLS command works on this server
[000.557]Connection converted to SSL
SSLVersion in use: TLSv1_3
Cipher in use: TLS_AES_256_GCM_SHA384
Certificate 1 of 3 in chain: Cert VALIDATED: ok
Cert Hostname VERIFIED (s113.resellerdesktop.de = s113.resellerdesktop.de | DNS:gesperrt.s113.resellerdesktop.de | DNS:mailpwd.s113.resellerdesktop.de | DNS:pma.s113.resellerdesktop.de | DNS:s113.resellerdesktop.de | DNS:webmail.s113.resellerdesktop.de | DNS:www.s113.resellerdesktop.de)
cert not revoked by CRL
cert not revoked by OCSP
serialNumber=03:06:78:2c:10:74:ad:f3:10:91:27:d2:92:a5:a1:8b:81:38
subject= /CN=s113.resellerdesktop.de
issuer= /C=US/O=Let’s Encrypt/CN=Let’s Encrypt Authority X3

Wenn es doch immer nur so einfach wäre 😉

Koji Pakete gibt es hier:

https://koji.fedoraproject.org/koji/packages?start=400&order=package_name&prefix=o&inherited=1