AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 787548
Accepted
Adrian Zaugg
Adrian Zaugg
Asked: 2016-07-03 06:34:28 +0800 CST2016-07-03 06:34:28 +0800 CST 2016-07-03 06:34:28 +0800 CST

exim4 检查客户端证书总是无效

  • 772

我的 exim 服务器配置为在建立连接时请求客户端证书。我设置了一个 ACL(在 rcpt 阶段)来记录或添加一个标题。证书检查结果:

warn
   encrypted = *
   ! verify = certificate
   #condition = ${if def:tls_in_peerdn {yes}{no}}   # -> newer versions of exim use $tls_in_peerdn!
   condition = ${if def:tls_peerdn {yes}{no}} 
   add_header = X-TLS-Client-Certificate: invalid (${tls_peerdn})
   log_message = Invalid TLS client certificate presented (${tls_peerdn}).

warn
   encrypted = *
   ! verify = certificate
   condition = ${if def:tls_peerdn {no}{yes}} 
  log_message = No TLS client certificate presented.

warn
   verify = certificate  
   add_header = X-TLS-Client-Certificate: valid
   condition = false

不幸的是,我看到的任何消息都没有被检查为有效。但检查无证书有效。

我设置

tls_try_verify_hosts = *

因此进行了检查,并且(使用 Debian,它包含在标准配置中)信任锚已配置并可以访问:

tls_verify_certificates = /etc/ssl/certs/ca-certificates.crt

测试...

openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -verify 4 -connect mailserver.dom.tld:25 -starttls smtp -cert /etc/ssl/letsencrypt/fullchain.pem -key /etc/ssl/letsencrypt/privkey.pem

...从服务器到自身使用与服务器使用相同的密钥,包括按正确顺序的中间证书不会给出有效的检查结果。

我错过了什么?

debian configuration certificate exim tls
  • 2 2 个回答
  • 1990 Views

2 个回答

  • Voted
  1. BillThor
    2016-07-03T19:50:39+08:002016-07-03T19:50:39+08:00

    如果您的服务器使用默认配置,它应该使用snakeoil自签名证书。这对于在传出和传入连接上建立 TLS 连接是足够且可接受的。但是,它将无法通过验证。您将需要使用来自受信任机构的证书才能通过验证。

    您是否为客户提供了可以用来代替登录的证书?除了为您的用户提供用户证书外,我希望客户端证书经常失败。许多服务器使用自签名证书,或者存在其他会导致验证失败的问题。

    tls_verify_hosts除非您设置或,否则 Exim 不会要求提供客户端证书tls_try_verify_hosts。Exim 文档的加密 SMTP 连接部分 很好地介绍了证书。

    许多组织无法正确配置其 DNS 以使用 STMP。DKIM 特别麻烦,我遇到的大多数签名者都无法通过验证。我不太希望许多站点已经使用正确的有效证书配置了他们的服务器。

    在最近限制连接到 TLS v1.0 及更高版本之后,我不得不停止STARTTLS向许多服务器发布消息。我还没有尝试为任何客户端验证 TLS 证书。如果我这样做了,它最多会计入他们的垃圾邮件分数。我可以启用tls_peerdn日志选择器来调查是否有任何站点可以通过验证。

    基于 TLS 的 SMTP 正在增长,但远未达到标准。那些确实使用它的站点是通过其他方式受到良好信任的站点。

    更新:我检查了我的日志,到目前为止只有两个发件人通过了验证。大多数客户没有验证。

    我尝试验证我的证书:

    • OpenSSL 连接openssl.client.net不应该通过 rDNS 验证。
    • fullchain.cert 不会追溯到默认信任库中的证书。这没关系,因为链证书是由信任库中的证书签名的。
    • 看来 openssl 甚至没有尝试发送客户端证书。可能是因为信任链。如果您将第三个证书添加到 fullchain.pem 文件,它可能会起作用。
    • 我看到列出的服务器的 DN,但没有迹象表明 open_ssl 甚至尝试发送证书。

    我使用的测试命令是:

    echo quit | openssl s_client -cert fullchain.pem -key privkey.pem \
       -starttls smtp -connect mail.systemajik.com:587 -debug 2>&1 | less
    
    • 1
  2. Best Answer
    Adrian Zaugg
    2017-02-07T17:05:51+08:002017-02-07T17:05:51+08:00

    参数 -CAfile 的值应该是您的 Let's encrypt 的 chain.pem 和 -cert cert.pem 的值:

    openssl s_client -CAfile /etc/ssl/letsencrypt/chain.pem -verify 4 \
            -connect mailserver.dom.tld:25 -starttls smtp \
            -cert /etc/ssl/letsencrypt/cert.pem \
            -key /etc/ssl/letsencrypt/privkey.pem
    

    像这样,您的证书将由您的服务器验证。

    • 0

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve