如何阻止 Cyrus 提供根证书?

如何阻止 Cyrus 提供根证书?

自从更改了我的 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确保无误)。只是因为我比较严谨,我在两个服务器上将servernamein更改imapd.conf为相同的 CNAME - 一个是主服务器,另一个应该成为用于故障转移的副本服务器,因此名称相同。当然,这也会更改 SASL 的 AUTH 领域。虽然在 上我得到了您在使用标准领域(普通主机名)的 uidsrv1时也观察到的错误 19 ,但在 上我得到了另一个错误(设置相同,但规范域名不同),即这个:cyrussrv2

Login failed: authentication failure at /usr/lib/x86_64-linux-gnu/perl5/5.20/Cyrus/IMAP/Admin.pm line 120.

很有趣,不是吗?如果我servernameimapd.conf第一台或第二台服务器上取消注释,一切都会正常工作,没有任何错误。我的解决方案是添加一个具有领域的 cyrus SASL 用户servername,一切又恢复正常。“自签名证书”错误消失了。

读完您的问题后,我做了一些测试:如果我将tls_ca_path: /tmp/和设置为仅中级证书,Cyrus 仍会输出链式根 CA 证书。但是:取消注释或添加与 具有相同领域的SASL 用户时tls_ca_file:不会触发此错误。servernamecyrusservername

很奇怪。由于 Cyrus 无论如何都会输出根 CA 证书,所以我确信这不是导致此错误消息的原因。我没有得到它,无论是在第二台服务器上,还是在具有正确 SASL 域设置的主服务器上!在我的情况下,它是错误的域,您的里程可能会有所不同。因此,err 19 消息与根 CA 证书无关。

希望这能有所帮助,lbc(又一个 Perl 憎恨者 :-)

相关内容