[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Exim - Zertifikatkette tut nicht



On 30.12.2014 22:15, Heiko Schlittermann wrote:
Paul Muster <exp-311215@news.muster.net> (Di 30 Dez 2014 21:14:25 CET):

ich schaffe es nicht, Exim ein neues SSL/TLS-Zertifikat zu verpassen.

Bisher lief Exim einfach mit einem Server-Zertifikat, nun wird ein
Zwischen-CA-Zertifikat benötigt. Laut Doku soll man dieses einfach
hinter das Server-Zertifikat in die Datei reinkopieren.

Gleichzeitig nutze ich die Gelegenheit, auf aktuelle Schlüssellängen
(CAs 4096 Bit, Server 2048 Bit) und Hash-Algorithmen (SHA256) zu
wechseln.

Du hast im globalen Teil der Konfig

     tls_certificate = <Pfad zu Deinem Chain-Zertifikat>
     tls_privatekey  = <Pfad zum entprechenden Key>

eingetragen?

Jepp. (Mittels der Einträge in
/etc/exim4/conf.d/main/000_localmacros

MAIN_TLS_CERTIFICATE = /etc/<pfad>/cert.pem
MAIN_TLS_PRIVATEKEY = /etc/<pfad>/key.pem

)

Wie sehen die anderen TLS-relevanten Optionen im globalen Teil aus?

MAIN_TLS_TRY_VERIFY_HOSTS =
resultiert in
tls_try_verify_hosts =
Sonst alles default.

Sind das selbstgebaute Zertifikate? Oder von einer offiziellen CA?

Ja. Nein. Die CA ist allerdings ordnungsgemäß dem System bekannt gemacht mittels Ablage in /usr/share/ca-certificates/ und Aktivierung über "dpkg-reconfigure ca-certificates".

Was passiert, wenn Du mit openssl eine Verbindung aufbaust:

     openssl s_client -connect -startls smtp <server>:<port>

"openssl s_client -starttls smtp -connect <server>:<port>" ergibt:

Es wird korrekt erkannt, dass der Server drei Zertifikate schickt (habe mal sicherheitshalber das RootCA-Zertifikat mit in die Kette gepackt). Dann meint es:

verify error:num=19:self signed certificate in certificate chain
verify return:0
3073849496:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01:rsa_pk1.c:100: 3073849496:error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed:rsa_eay.c:721: 3073849496:error:1408D07B:SSL routines:SSL3_GET_KEY_EXCHANGE:bad signature:s3_clnt.c:1832:

Die Zertifikatkette wird richtig erkannt, Issuer und Subject passen auch jeweils. (Das hatte ich mittels "openssl verify ..." bereits geprüft. Auch gnutls' "certtool -e" findet da keinen Fehler.)

Dann meldet es:

New, (NONE), Cipher is (NONE)
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: <ID>
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1419975277
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)

Ja, klar, das RootCA-Zertifikat ist self-signed.

2014-12-30 20:10:44 TLS error on connection from <DNS-Name> [<IP>]
(gnutls_handshake): A TLS fatal alert has been received.

Sonst keine zielführenden Hinweise im mailog des Exim? Die Files liest
er nicht als root, sondern als Debian-Exim.

Nein, sonst nichts. Die Zertifikate sind für jedermann lesbar, der private key unverändert.


Danke für die Hilfe & viele Grüße

Paul



Reply to: