„certificate verify failed“: IPCop 2 Email-Probleme über Startcom zertifizierten SMTP-Server

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.

IPCop 2 Email Settings
IPCop 2 Email Settings

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)

2 Gedanken zu „„certificate verify failed“: IPCop 2 Email-Probleme über Startcom zertifizierten SMTP-Server“

  1. 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 nach update-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 danach update-ca-certificates ausführen. Bei mir hat das jedenfalls so geklappt.
    :)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.