<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>hi, teste doch mal ssl cert das cert.pem und als ca file das fullchain <div><br></div><div>Grüße Jan</div><div><br></div><div style="font-size:100%;color:#000000"><!-- originalMessage --><div>-------- Ursprüngliche Nachricht --------</div><div>Von: Lukas <lukas.meuerer@gmail.com> </div><div>Datum: 14.07.18 12:44 (GMT+01:00) </div><div>An: dovecot@listen.jpberlin.de </div><div>Betreff: Replikation über SSL: Received invalid SSL certificate: unable to get local issuer certificate </div><div><br></div></div><div dir="ltr">Hallo,<br><br>ich versuche die Replikation über TCP mit SSL zwischen zwei Dovecot 2.2.10 Servern auf RHEL 7.5 zum Laufen zu bekommen.<br><br>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:<br><br>Jul 14 08:57:40 server1 dovecot: doveadm(lukas): Received invalid SSL certificate: unable to get local issuer certificate: /CN=server2.domain.tld<br>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<br>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<br><br>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:<br><br># openssl s_client -connect server1.domain.tld:12345<br>CONNECTED(00000003)<br>depth=0 CN = server1.domain.tld<br>verify error:num=20:unable to get local issuer certificate<br>verify return:1<br>depth=0 CN = server1.domain.tld<br>verify error:num=21:unable to verify the first certificate<br>verify return:1<br>---<br>Certificate chain<br> 0 s:/CN=server1.domain.tld<br> i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3<br>---<br><br>Beide Server haben jedoch in "ssl_client_ca_file" den Pfad zum Zertifikatsbundle von RHEL. Testweise habe ich das IdenTrust cross-signed Intermediate Zertifikat von <a href="https://letsencrypt.org/certificates/">https://letsencrypt.org/certificates/</a> runtergeladen und "ssl_client_ca_file" auf die Datei gesetzt. Dann ändert sich der Fehler auf:<br>doveadm(lukas): Received invalid SSL certificate: unable to get issuer certificate: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3<br><br>Auf der anderen Seite kann openssl die Chain wohl prüfen wenn ich sie mit dem lets-encrypt-x3-cross-signed.pem.txt Intermediate Zertifikat prüfe:<br><br># openssl s_client -connect server1.domain.tld:12345 -CAfile /etc/dovecot/lets-encrypt-x3-cross-signed.pem.txt<br>CONNECTED(00000003)<br>depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3<br>verify return:1<br>depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3<br>verify return:1<br>depth=0 CN = server1.domain.tld<br>verify return:1<br>---<br>Certificate chain<br> 0 s:/CN=server1.domain.tld<br> i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3<br>---<br><br>Beide Server verwenden die unten stehende dovecot.conf Datei. Sie unterscheiden sich nur in den Pfaden zu den jeweils eigenen SSL Keys und Zertifikaten, sowie im "mail_replica" Parameter, der auf den jeweils anderen Host zeigt.<br><br>Ich habe schon mehrfach alles mit dem Artikel über Replikation im Wiki und anderen Webseiten abgegleichen, aber finde leider keine Lösung.<br><br>Grüße<br>Lukas<br><br><br><br><br># 2.2.10: /etc/dovecot/dovecot.conf<br># OS: Linux 3.10.0-862.6.3.el7.x86_64 x86_64 Red Hat Enterprise Linux Server release 7.5 (Maipo) xfs<br>auth_mechanisms = plain login<br>auth_username_format = %n<br>doveadm_password = ein_langes_sicheres_passwort<br>doveadm_port = 12345<br>first_valid_uid = 97<br>mail_gid = dovecot<br>mail_home = /var/spool/dovecot/%u<br>mail_location = sdbox:/var/spool/dovecot/%u<br>mail_plugins = " notify replication"<br>mail_uid = dovecot<br>namespace inbox {<br> inbox = yes<br> location = <br> mailbox Drafts {<br> auto = subscribe<br> special_use = \Drafts<br> }<br> mailbox Sent {<br> auto = subscribe<br> special_use = \Sent<br> }<br> mailbox Spam {<br> auto = subscribe<br> }<br> mailbox Trash {<br> auto = subscribe<br> special_use = \Trash<br> }<br> prefix = <br>}<br>passdb {<br> args = scheme=SSHA512 username_format=%n /etc/dovecot/passwd<br> driver = passwd-file<br>}<br>plugin {<br> mail_replica = tcps:server2.domain.tld:12345<br> replication_sync_timeout = 2<br>}<br>service auth {<br> unix_listener auth-userdb {<br> mode = 0600<br> }<br>}<br>service doveadm {<br> inet_listener {<br> port = 12345<br> ssl = yes<br> }<br>}<br>service imap-login {<br> inet_listener imap {<br> port = 0<br> }<br> inet_listener imaps {<br> address = 62.x.x.x,2a03:x:x:x:x:x:x:x<br> port = 993<br> }<br>}<br>service lmtp {<br> inet_listener lmtp {<br> address = localhost<br> port = 7124<br> }<br>}<br>service pop3-login {<br> inet_listener pop3 {<br> port = 0<br> }<br> inet_listener pop3s {<br> address = 62.x.x.x,2a03:x:x:x:x:x:x:x<br> port = 995<br> }<br>}<br>service replicator {<br> process_min_avail = 1<br> unix_listener replicator-doveadm {<br> mode = 0660<br> }<br>}<br>ssl = required<br>ssl_cert = </etc/letsencrypt/live/server1.domain.tld/fullchain.pem<br>ssl_cipher_list = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384<br>ssl_client_ca_file = /etc/pki/tls/cert.pem<br>ssl_key = </etc/letsencrypt/live/server1.domain.tld/privkey.pem<br>ssl_prefer_server_ciphers = yes<br>ssl_protocols = !SSLv3 !SSLv2<br>userdb {<br> args = username_format=%n /etc/dovecot/passwd<br> driver = passwd-file<br> result_failure = return-fail<br> result_internalfail = return-fail<br>}<br><br></div>
</body></html>