[Postfixbuch-users] "Untrusted TLS connection" bei Verbindungen zum internen Mailrelay, obwohl dem Zertifikat vom Mailrelay vertraut wird

Igor Sverkos igor.sverkos at googlemail.com
Mi Apr 23 16:12:23 CEST 2014


Hallo,

hier im lokalen Netz steht ein Postfix-Relay, welches von allen
anderen Servern im LAN Mails annehmen und diese dann zustellen soll.
Eben ein Relayserver ;)

Ich versuche gerade auch intern alles mit TLS abzusichern. Scheitere
aber daran, dass in den Logs der Server immer folgendes steht:

  Apr 23 15:09:55 srv8 postfix-null/smtp[5545]: Untrusted TLS
connection established to relay.example.intern[10.72.44.101]:25:
TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)

Ich störe mich an dem "Untrusted TLS connection", da das Zertifikat
von relay.example.intern eigentlich gültig ist:

server23 ~ # echo "QUIT" | openssl s_client -CApath /etc/ssl/certs
-starttls smtp -connect relay.example.intern:25
CONNECTED(00000003)
depth=2 CN = Example Inc. Root CA, O = Example Inc., C = DE
verify return:1
depth=1 CN = Example Inc. TLS CA, O = Example Inc., C = DE
verify return:1
depth=0 CN = relay.example.intern, O = Example Inc., C = DE
verify return:1
---
Certificate chain
 0 s:/CN=relay.example.intern/O=Example Inc./C=DE
   i:/CN=Example Inc. TLS CA/O=Example Inc./C=DE
 1 s:/CN=Example Inc. TLS CA/O=Example Inc./C=DE
   i:/CN=Example Inc. Root CA/O=Example Inc./C=DE
---
Server certificate
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/CN=relay.example.intern/O=Example Inc./C=DE
issuer=/CN=Example Inc. TLS CA/O=Example Inc./C=DE
---
No client certificate CA names sent
---
SSL handshake has read 3379 bytes and written 687 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: A3E50648D98AD48F538CA861B464F7A1B5D6CF...
    Session-ID-ctx:
    Master-Key: 1F760F2C668FC93B9D15B0A1B440DA85991086...
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
        ....

    Compression: 1 (zlib compression)
    Start Time: 1398258861
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
250 DSN
DONE

Das ist für mich der Beweis, dass unser "Example Inc. Root CA" korrekt
in "/etc/ssl/certs" installiert ist. Ggenauer gesagt ist es
richtigerweise in
"/usr/local/share/ca-certificates/example_root_ca.crt" installiert und
"update-ca-certificates" (welches c_rehash aufruft) packt das an die
richtige Stelle, siehe

server23 ~ # ls -l /etc/ssl/certs/example*
lrwxrwxrwx 1 root root 57 Apr 23 15:07
/etc/ssl/certs/example_root_ca.pem ->
/usr/local/share/ca-certificates/example_root_ca.crt

Die Gegenprobe mit

server23 ~ # echo "QUIT" | openssl s_client -CApath
/etc/ssl/gibtesnicht -starttls smtp -connect relay.example.intern:25

liefert auch korrekterweise das erwartete

  Verify return code: 20 (unable to get local issuer certificate)

zurück. Mit anderen Worten, die Zertifikatskette sollte also passen.

Nun zur Postfix-Konfiguration:

server23 ~ # postconf -n
# postconf -n
alias_database =
alias_maps =
config_directory = /etc/postfix
inet_interfaces = loopback-only
local_recipient_maps =
local_transport = error:5.1.1 Mailbox unavailable
mydestination =
myhostname = server23.example.intern
mynetworks_style = host
recipient_delimiter = +
relay_domains =
relayhost = [relay.example.intern]
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_loglevel = 1
smtp_tls_security_level = encrypt
smtpd_tls_CApath = /etc/ssl/certs
smtpd_tls_ask_ccert = no
smtpd_tls_cert_file = /etc/ssl/private/server23.chained
smtpd_tls_key_file = /etc/ssl/private/server23.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_use_tls = yes
syslog_name = postfix-null


relay ~ # postconf -n
[...]
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtpd_tls_CApath = /etc/ssl/certs
smtpd_tls_ask_ccert = no
smtpd_tls_cert_file = /etc/ssl/postfix/relay.example.intern.chained
smtpd_tls_key_file = /etc/ssl/postfix/relay.example.intern.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_use_tls = yes

Das "relay" ist eine andere physische Kiste wie "server23", nur um das
klarzustellen.

Wo liegt nun mein Denkfehler? Es ist doch richtig, dass wenn server23,
der hier ja als smtp-Client fungiert, dem vom Relay-Server
präsentierte Zertifikat vertraut, im smtp-Log von server23 nichts von
"Untrusted TLS connection" stehen sollte, oder?


Vielen Dank für eure Hilfe.


-- 
Ich Grüße,
Igor



Mehr Informationen über die Mailingliste Postfixbuch-users