Re: Replikation über SSL: Received invalid SSL certificate: unable to get local issuer certificate

Lukas lukas.meuerer at gmail.com
Sa Jul 14 22:34:44 CEST 2018


Hallo Alexander,

Am Sa., 14. Juli 2018 um 19:23 Uhr schrieb Alexander Dalloz <
ad+lists at uni-x.org>:

> Ein openssl s_client Test gegen Port 993 von einem der beiden Server
> gegen den anderen liefert eine sauber validierte Zertifikatskette?
>
> Bei mir funktioniert die Auflösung auf einem CentOS 7.5 gegen einen IMAP
> Server mit einem letsencrypt Zertifikat ohne Probleme:
>

Über den IMAPS Port erhalte ich sowohl das Server Zertifikat als auch das
Intermediate Zertifikat und alles funktioniert problemlos:

# openssl s_client -showcerts -connect server.domain.tld:993
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = server.domain.tld
verify return:1
---
Certificate chain
 0 s:/CN=server.domain.tld
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----


Mein Problem ist, dass über den dsync Port nur das Server Zertifikat kommt.
Das ist, so wie ich die Doku verstehe, wohl normal, weshalb man
"ssl_client_ca_file" setzen muss, damit das Zertifikat geprüft werden kann.


Du kannst dem Zertifikat aus lets-encrypt-x3-cross-signed.pem.txt
> explizit vertrauen:
>
> # update-ca-trust force-enable
> # cp lets-encrypt-x3-cross-signed.pem.txt /etc/pki/ca-trust/source/anchors/
> # update-ca-trust extract
>
> Auf meinem CentOS 7.5 System  ist dies nicht notwendig.
>

Ich würde vermuten, dass es auch auf RHEL 7.5 nicht nötig sein sollte. Ich
dachte, dass CentOS die gleiche Zertifikatsbundle Datei enthält.

Jedenfalls, wenn ich das Zertifikat auf die von dir empfohlene Weise in die
/etc/pki/tls/cert.pem aufnehme, funktioniert mit meiner ursprünglichen
geposteten Konfiguration sowohl IMAPS, als jetzt auch die Replikation.
ssl_cert = </etc/letsencrypt/live/server1.domain.tld/fullchain.pem
ssl_client_ca_file = /etc/pki/tls/cert.pem

Vielen Dank für den hilfreichen Tipp.

Was ich jedoch nicht verstehe, warum es nicht funktionierte, als ich vorher
ssl_client_ca_file auf die lets-encrypt-x3-cross-signed.pem.txt setzte.

Grüße
Lukas

Am Sa., 14. Juli 2018 um 19:23 Uhr schrieb Alexander Dalloz <
ad+lists at uni-x.org>:

> Am 14.07.2018 um 12:44 schrieb Lukas:
> > Hallo,
> >
> > ich versuche die Replikation über TCP mit SSL zwischen zwei Dovecot
> 2.2.10
> > Servern auf RHEL 7.5 zum Laufen zu bekommen.
> >
> > Sobald die Replikation beginnt oder ich sie z. B. versuche mittels
> "doveadm
> > replicator replicate lukas" anzustoßen, wird auf dem Server auf dem ich
> den
> > Befehl ausführe folgendes geloggt:
> >
> > Jul 14 08:57:40 server1 dovecot: doveadm(lukas): Received invalid SSL
> > certificate: unable to get local issuer certificate:
> /CN=server2.domain.tld
> > Jul 14 08:57:40 server1 dovecot: doveadm(lukas): Error: doveadm server
> > disconnected before handshake: Received invalid SSL certificate: unable
> to
> > get local issuer certificate: /CN=server2.domain.tld
> > Jul 14 08:57:40 server1 dovecot: doveadm(lukas): Error: sync:
> Disconnected
> > from remote: Received invalid SSL certificate: unable to get local issuer
> > certificate: /CN=server2.domain.tld
> >
> > Das Problem liegt wohl in der Zertifikat-Chain. Wenn ich mit openssl auf
> > den dsync Port 12345 connecte sehe ich dass nur das Zertifikat für den
> > Host, nicht aber die volle Chain geliefert wird:
> >
> > # openssl s_client -connect server1.domain.tld:12345
> > CONNECTED(00000003)
> > depth=0 CN = server1.domain.tld
> > verify error:num=20:unable to get local issuer certificate
> > verify return:1
> > depth=0 CN = server1.domain.tld
> > verify error:num=21:unable to verify the first certificate
> > verify return:1
> > ---
> > Certificate chain
> >   0 s:/CN=server1.domain.tld
> >     i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
>
>
> Ein openssl s_client Test gegen Port 993 von einem der beiden Server
> gegen den anderen liefert eine sauber validierte Zertifikatskette?
>
> Bei mir funktioniert die Auflösung auf einem CentOS 7.5 gegen einen IMAP
> Server mit einem letsencrypt Zertifikat ohne Probleme:
>
> # echo QUIT | openssl s_client -connect 1.2.3.4:143 -starttls imap
> CONNECTED(00000003)
> depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
> verify return:1
> depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
> verify return:1
> depth=0 CN = sys5.org
> verify return:1
> ---
> Certificate chain
>   0 s:/CN=sys5.org
>     i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
>   1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
>     i:/O=Digital Signature Trust Co./CN=DST Root CA X3
>   2 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
>     i:/O=Digital Signature Trust Co./CN=DST Root CA X3
>
> Du kannst dem Zertifikat aus lets-encrypt-x3-cross-signed.pem.txt
> explizit vertrauen:
>
> # update-ca-trust force-enable
> # cp lets-encrypt-x3-cross-signed.pem.txt /etc/pki/ca-trust/source/anchors/
> # update-ca-trust extract
>
> Auf meinem CentOS 7.5 System  ist dies nicht notwendig.
>
> Alexander
>
>
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://listen.jpberlin.de/pipermail/dovecot/attachments/20180714/9c34eb66/attachment.html>


Mehr Informationen über die Mailingliste Dovecot