【问题标题】:Postfix SMTP relay: client does not offer TLS client certificate to the server?Postfix SMTP 中继:客户端不向服务器提供 TLS 客户端证书?
【发布时间】:2014-06-01 01:42:14
【问题描述】:

我有两台机器,一台运行 Ubuntu,一台运行 Debian,都运行 Postfix。目的是机器#2 成为机器#1 的 SMTP 中继/智能主机。我为两台机器创建了一个 CA 并颁发了证书:#2 的服务器证书和#1 的客户端证书。

当从 #1 发送电子邮件时(通过让 MUA 与 localhost:25 上的 Postfix 对话,意图将电子邮件中继到 #2),基本的事情工作正常:机器可以相互交流并且实际上进行了中继尝试。这个想法是如果从 #1 提供有效的客户端 SSL/TLS 证书,则允许在 #2 上进行中继。

#2的相关配置为:

smtpd_tls_received_header = yes
smtpd_tls_loglevel = 2
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/private/cert2.pem
smtpd_tls_key_file = /etc/ssl/private/key2-d.pem
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_auth_only = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_tls_all_clientcerts

#1 上的配置是:

smtp_tls_CAfile = /etc/ssl/certs/cacert.pem
smtp_tls_cert_file = /etc/ssl/private/cert1.pem
smtp_tls_key_file = /etc/ssl/private/key1-d.pem
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = verify
smtp_tls_loglevel = 2

Machine#1 连接到 #2,启用 STARTTLS,日志文件显示它成功验证了来自 #2 的证书,并尝试中继消息。 但是,它似乎没有将客户端证书发送到#2,并且#2 拒绝中继消息。

来自 #1 的日志条目:

Apr 17 01:18:14 mail1 postfix/smtp[30250]: Verified TLS connection established to mail2[x.x.x.x]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Apr 17 01:18:14 mail1 postfix/smtp[30244]: 8A2328BDB4: to=<addr@gmail.com>, relay=mail2[x.x.x.x]:25, delay=3488, delays=3486/0.41/0.85/0.19, dsn=4.7.1, status=deferred (host mail2[x.x.x.x] said: 454 4.7.1 <addr@gmail.com>: Relay access denied (in reply to RCPT TO command))

来自 #2 的日志条目:

Apr 17 01:18:13 mail2 postfix/smtpd[28798]: Anonymous TLS connection established from unknown[y.y.y.y]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Apr 17 01:18:13 mail2 postfix/smtpd[28798]: NOQUEUE: reject: RCPT from unknown[y.y.y.y]: 454 4.7.1 <addr@gmail.com>: Relay access denied; from=<addr@mail1> to=<addr@gmail.com> proto=ESMTP helo=<mail1>

有什么想法吗?我的假设是 #1 没有在 mail2 日志中的“已建立匿名 TLS 连接”部分发送其客户端证书。

【问题讨论】:

标签: email ssl postfix-mta client-certificates


【解决方案1】:

在后缀 conf 文件 main.cf 中添加您的服务器地址 ( server1.domaine.com ) 我的网络 = 127.0.0.1/8

【讨论】:

    【解决方案2】:

    TLS 服务器必须向客户端请求证书,客户端不会自己发送。尝试添加

    smtpd_tls_ask_ccert=yes

    在服务器端

    【讨论】:

    • 好多了,谢谢!现在客户端证书通过并验证,但 Postfix 仍然拒绝中继:Apr 17 10:33:02 mail2 postfix/smtpd[28017]: unknown[xxxx]: subject_CN=ivoras, issuer=Cosmos CA,fingerprint=... , pkey_fingerprint=... 4 月 17 日 10:33:02 mail2 postfix/smtpd[28017]:从未知 [xxxx] 建立的可信 TLS 连接:TLSv1.2 与密码 ECDHE-RSA-AES256-GCM-SHA384(256/256 位) ) Apr 17 10:33:02 mail2 postfix/smtpd[28017]: NOQUEUE: reject: RCPT from unknown[xxxx]: 454 4.7.1 : Relay access denied...
    • 好的,这不再是 TLS 问题,现在我正在寻找如何告诉 postfix 允许中继到所有域,而不仅仅是在 relay_domains 中列出的域。
    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2020-10-23
    • 2015-04-18
    • 2021-05-26
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多