无法验证第一个证书(Comodo EssentialSSL Wildcard)

无法验证第一个证书(Comodo EssentialSSL Wildcard)

我对设置 SSL 证书和使用服务器还不熟悉,所以请耐心听我解释我所处的情况。

我最近获得了 Comodo EssentialSSL Wildcard 许可证,将用于保护我的服务器。我正在配置的服务器用于 Kolab。Kolab 正在运行,但尚未配置 SSL,因此我想我可以设置它。我按照相应的 Kolab 操作指南页面 (https://docs.kolab.org/howtos/secure-kolab-server.html),但却卡在了设置 cyrus-IMAP 服务器的部分。

运行时:

openssl s_client -showcerts -connect example.org:993

我得到以下输出(截断):

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.org
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----
---
Server certificate
subject=/OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.example.org
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
---
No client certificate CA names sent
---
SSL handshake has read 2019 bytes and written 421 bytes
---
...

    Start Time: 1502097786
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
* OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE AUTH=PLAIN AUTH=LOGIN SASL-IR] example.org Cyrus IMAP git2.5+0-Debian-2.5~dev2015021301-0~kolab2 server ready

但是,如果我为证书指定 -CApath,它确实可以工作,并且我会得到验证返回代码:0(ok),但前提是我通过 ssh 登录到服务器时运行该命令。在 thunderbird 上设置邮件时,我可以访问我的邮箱,但必须先添加安全例外,因为证书具有“未知身份”。但是,该证书在 https 的端口 443 上完美运行,而无需指定 -CApath。

任何帮助将不胜感激。

答案1

我通过检查中间包文件的顺序是否格式正确并将其从 .ca-bundle 更改为 .pem 并将以下行添加到我的 imapd.conf 中来解决了该问题:

tls_ca_path: /etc/ssl/certs

答案2

如果您遇到以下错误openssl s_client -showcerts -connect example.com:443

验证错误:num=20:无法获取本地颁发者证书

你需要确保包括CA 的捆绑包证书。

当 Comodo CA 颁发 SSL 证书时,它会发送一个特定的 Comodo CA 中间证书包,以便与证书一起安装。这些证书会创建所谓的证书链。最终用户证书是使用其中一个中间证书签名的,而中间证书是使用其中一个根证书签名的。当浏览器访问网站时,它会尝试构建证书链,并将提供给它的 SSL 证书链接回其信任库中的一个根证书。

确保您已从证书提供商处下载这些文件。

最方便的方式(尤其是对于Nginx)是将它们全部合并为一个,例如通过将 CA Bundle 附加到主 CRT 中:

$ cat STAR_example_com.ca-bundle > STAR_example_com.crt

如果您没有单个.ca-bundle文件(CA Bundle),而是有多个文件,请将它们全部合并为一个。

然后STAR_example_com.crt照常安装。以 Nginx 为例:

ssl_certificate /etc/nginx/ssl/STAR_example_com.crt;
ssl_certificate_key /etc/nginx/ssl/STAR_example_com.key;

相关内容