Dovecot 拒绝客户端证书

Dovecot 拒绝客户端证书

我已将 dovecot 配置为使用客户端证书身份验证。我已经使用 CA.pl (openssl 包装器)创建 CA 证书并用它签署客户端和服务器证书。(没有证书链,CA 证书在客户端中受信任)我已将证书设置为 dovecot 中的 CA 证书以进行客户端身份验证。 Dovecot 正确地向 IceDove 请求证书,但单击“确定”后,它失败并显示错误“客户端未提供有效的 SSL 证书”。

使用 openssl 手动测试 IMAP 连接也会导致此错误。

鸽舍配置:https://gist.github.com/Xcess/71f7eeeda0a270b252f1de5d7308c0e2

我尝试过 CN=user1 的证书并且[电子邮件受保护]。都失败了。还将 common-name 设置为 dovecot conf 中的用户名...没有区别。

我不知道该怎么做,因为这一切都在手册中说明,并且看起来非常简单明了。但它失败了。

谢谢


更新 1:命令输出openssl x509 -in certificate.crt -text -noout

证书:数据:版本:3 (0x2) 序列号:8e:3d:9b:7c:13:35:88:b7
签名算法:sha256WithRSAEncryption
颁发者:C=IR、ST=Isf、O=Apps4you、CN=lnxsrv2
有效性
不早于: 2017 年 3 月 1 日 10:45:32 GMT
不晚于: 2018 年 3 月 1 日 10:45:32 GMT
主题:C=AU、ST=Some-State、O=Internet Widgits Pty Ltd、CN=user1/[电子邮件受保护]
主题公钥信息:
公钥算法: rsaEncryption
公钥:(2048 位)
模数:
--- 指数: 65537 (0x10001)
X509v3 扩展:
X509v3 基本约束: CA:FALSE
Netscape 注释: OpenSSL 生成的证书
X509v3 主题密钥标识符: ---
-----输出省略-----


更新 2:这个稍微修改过的配置文件也不起作用: https://gist.github.com/Xcess/599beaec17a4a524a2acbde1b7f5c70f


更新 3:
详细 SSL 日志文件:
https://gist.github.com/Xcess/f54850ecdaa6bcd044a77d133cb9b9c2

答案1

您需要向此证书添加 X.509 扩展才能将其用于客户端身份验证。

在 中openssl.cnf[ usr_cert ]根据openssl.conf示例:

[ usr_cert ]
nsCertType = client, email

但是,据说 nsCertType 已过时,并且还需要添加 X.509 扩展。然后添加一个新部分:

[ xpclient_ext]
extendedKeyUsage = 1.3.6.1.5.5.7.3.2

要添加扩展,您还需要-extensions xpclient_ext在生成证书时将选项传递给 openssl。

RFC 3280 定义了以下扩展密钥使用目的:

serverAuth (1.3.6.1.5.5.7.3.1) -- TLS Web 服务器身份验证
clientAuth (1.3.6.1.5.5.7.3.2) -- TLS Web 客户端身份验证

请注意,我建议添加nsCertType和 RFC 3280 扩展。一些软件,特别是 PfSense,仍然检查nsCertType.

答案2

我找到了答案,所以我想我也应该将其发布在这里。 (恰恰@behrad-eslamifar做过 :)

您应该将 CRL 附加到提供给 dovecot 的 CA 证书中即使您已设置 ssl_require_crl = no

像这样:

openssl ca -gencrl -out crlfile
cat crlfile >> cacert.pem
service dovecot restart

感谢大家的建议。 <3

相关内容