Gestern wollte ich mal wieder einen IPCop aktualisieren und dabei gleich die Email-Einstellungen auf unseren neuen Server anpassen. Unlustigerweise funktionierte der Emailversand nur unverschlüsselt. Mit „TLS: ja“ kam nur eine Fehlermeldung.
1. Das Problem: certificate verify failed
In den Email-Einstellungen des IPCop2 wurde als SMTP-Server ein Server eingetragen, dessen SSL-Zertifikat von der Startcom-CA ausgestellt wurde. Der Emailversand funktionierte mit aktivierter TLS-Verschlüsselung nicht. Der integrierte Emailhelper spuckt unter anderem folgende „certificate verify failed“-Fehlermeldung aus:
emailhelper -vv . . . TLS setup failed: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Auch eine Verbindung per openssl vom IPCop aus gibt „Verify return code: 19“ zurück, trotz Angabe des „CApath“. Ein sicheres Anzeichen, dass die Root-CA nicht erkannt wurde.
openssl s_client -starttls smtp -crlf -connect <server>:587 -CApath /etc/ssl/certs/ . . . SSL-Session: Protocol : TLSv1.2 Cipher : DHE-RSA-AES256-GCM-SHA384 Session-ID: 3F2F872AA5C01FC760C637F106287ED254431C111D03678413F227154CB1117C Session-ID-ctx: Master-Key: 7D3F885B749CC6636C1548996C0A9AF0585E64D317234BE4BAB5C254171B25A183AD9CFC45299CA8F59753181009FD20 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1422838795 Timeout : 300 (sec) Verify return code: 19 (self signed certificate in certificate chain)
Nach einem kurzen Gegenprüfen von einem anderen Ubuntu-Rechner aus, der mit demselben Befehl problemlos ein „Verify return code: 0“ zurücklieferte, war die Sache dann klar.
2. Die Lösung: Startcom-CA im IPCop updaten
Wir laden dazu die entsprechenden CA-Zertifikate von Startcom herunter. Ich hatte die ca-sha2.pem und ca.pem genommen und in .crt umbenannt. Danach kopieren wir die Zertifikate nach /usr/share/ca-certificates/mozilla
. Im Anschluss noch ein
update-ca-certificates
ausführen. Komischerweise stand das Startcom-Zertifikat in der /etc/ca-certificates.conf
drin. Warum es nicht tat, weiß ich nicht, nach dem update-ca-certificates
funktionierte es jedenfalls wieder:
emailhelper -vv Feb 02 02:08:38 ipcop sendEmail[25435]: DEBUG => The remote SMTP server supports TLS :) Feb 02 02:08:38 ipcop sendEmail[25435]: DEBUG => Starting TLS Feb 02 02:08:38 ipcop sendEmail[25435]: INFO => Sending: STARTTLS Feb 02 02:08:38 ipcop sendEmail[25435]: DEBUG => evalSMTPresponse() - Found SMTP success code: 220 Feb 02 02:08:38 ipcop sendEmail[25435]: SUCCESS => Received: 220 2.0.0 Ready to start TLS Feb 02 02:08:39 ipcop sendEmail[25435]: DEBUG => TLS session initialized :) . . . Feb 02 02:08:39 ipcop sendEmail[25435]: Email was sent successfully!
openssl s_client -starttls smtp -crlf -connect <server>:587 -CApath /etc/ssl/certs/ . . . SSL-Session: Protocol : TLSv1.2 Cipher : DHE-RSA-AES256-GCM-SHA384 Session-ID: E9E521F537FA34FBD74608E4A6A34A1F53044FAFD8451A73172D92159F0CFF97 Session-ID-ctx: Master-Key: 2F8E4B3F1D79337AF66B788EDF1889FD2A699B127BE22C51DBE227E53BDAD82A779BB7E8D26E0BE283801B05798A9D4A Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1422839305 Timeout : 300 (sec) Verify return code: 0 (ok)
Servus und Danke für den Post.
Die Certs funktionieren nicht, weil sie nach der Installation scheinbar nicht „angelegt“ sind.
/etc/ssl/certs
ist erstmal leer und wird erst nachupdate-ca-certificates
gefüllt.Analog zu deiner Anleitung lassen sich auch self signed certs einbinden. Cert nach
/usr/share/ca-certificates/
kopieren, in/etc/ca-certificates.conf
registrieren und danachupdate-ca-certificates
ausführen. Bei mir hat das jedenfalls so geklappt.:)
Danke Dir für den Hinweis.