我已将 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