自从更改了我的 cyrus 实例的证书后,每当我使用 cyradm 签名时都会收到以下警告:
cyradm --user cyrus --authz cyrus localhost
verify error:num=19:self signed certificate in certificate chain
这是一个 OpenSSL 错误,在使用以下命令连接到服务器时也会出现该错误openssl s_client -connect FQDN
(我已将主题/证书名称替换为 FQDN,并省略了用于发布的证书块):
CONNECTED(00000003)
depth=2 /C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=FQDN
i:/C=NL/O=TERENA/CN=TERENA SSL CA
1 s:/C=NL/O=TERENA/CN=TERENA SSL CA
i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
2 s:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware
---
Server certificate
-----BEGIN CERTIFICATE-----
(omitted)
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=FQDN
issuer=/C=NL/O=TERENA/CN=TERENA SSL CA
---
No client certificate CA names sent
---
SSL handshake has read 4171 bytes and written 328 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 88FC7D094D2B0A0EAD11ADBAB0F4605CFF8B72DA0079C3C6E47939018C4CA3D4
Session-ID-ctx:
Master-Key: A88EF226C587C6F9AE43EC7D04D6BC462E657ED851B6FC336940898A57C31E55BCFFACDFFEDBAFB3C65A024F27EB1006
Key-Arg : None
Start Time: 1431561482
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=LOGIN AUTH=PLAIN SASL-IR] FQDN Cyrus IMAP v2.4.12-Debian-2.4.12-2 server ready
这是我的/etc/imapd.conf
:
tls_ca_path: /etc/ssl/certs
tls_ca_file: /etc/ssl/certs/TERENA_SSL_CA.pem
tls_cert_file: /etc/ssl/certs/mail.pem
tls_key_file: /etc/ssl/private/mail.key
我从以下机构获得了 TERENA CA 证书https://www.terena.org/activities/tcs/repository/,部分“TCS CA 证书 (SHA1)/ TERENA SSL CA (PEM)”。检查文件显示文件中只有一个证书,因此这不可能是包含根证书的原因。有问题的根证书“UTN_USERFirst_Hardware_Root_CA.pem”是安装在服务器上的包less
的一部分。ca-certificates
我不知道为什么 Cyrus 坚持提供链的根证书然后又抱怨它。
更新 1:
- 系统运行的是Ubuntu 12.04。
- 中间CA的权限为644,叶CA的权限为444。
ls -lah /etc/ssl/certs/cyrus*
什么也不做,没有这样的文件夹。openssl x509 -in /etc/ssl/certs/cyrus-imapd-ca.pem -noout -text |grep Issuer
,我的证书的文件路径为:Issuer: C=NL, O=TERENA, CN=TERENA SSL CA CA Issuers - URI:http://crt.tcs.terena.org/TERENASSLCA.crt
答案1
错误信息可能具有误导性 - 自从我更改了(Debian 8.2/stable)servername
中的设置后,我也收到此错误。imapd.conf
我已经设置了两个孪生服务器,std 安装,使用来自 RapidSSL 的中间证书。两个服务器都运行 cyrus-imapd,设置完全相同(我比较了配置文件以diff
确保无误)。只是因为我比较严谨,我在两个服务器上将servername
in更改imapd.conf
为相同的 CNAME - 一个是主服务器,另一个应该成为用于故障转移的副本服务器,因此名称相同。当然,这也会更改 SASL 的 AUTH 领域。虽然在 上我得到了您在使用标准领域(普通主机名)的 uidsrv1
时也观察到的错误 19 ,但在 上我得到了另一个错误(设置相同,但规范域名不同),即这个:cyrus
srv2
Login failed: authentication failure at /usr/lib/x86_64-linux-gnu/perl5/5.20/Cyrus/IMAP/Admin.pm line 120.
很有趣,不是吗?如果我servername
在imapd.conf
第一台或第二台服务器上取消注释,一切都会正常工作,没有任何错误。我的解决方案是添加一个具有领域的 cyrus SASL 用户servername
,一切又恢复正常。“自签名证书”错误消失了。
读完您的问题后,我做了一些测试:如果我将tls_ca_path: /tmp/
和设置为仅中级证书,Cyrus 仍会输出链式根 CA 证书。但是:取消注释或添加与 具有相同领域的SASL 用户时tls_ca_file:
不会触发此错误。servername
cyrus
servername
很奇怪。由于 Cyrus 无论如何都会输出根 CA 证书,所以我确信这不是导致此错误消息的原因。我没有得到它,无论是在第二台服务器上,还是在具有正确 SASL 域设置的主服务器上!在我的情况下,它是错误的域,您的里程可能会有所不同。因此,err 19 消息与根 CA 证书无关。
希望这能有所帮助,lbc(又一个 Perl 憎恨者 :-)