OpenSSL:无法验证Experian URL的第一个证书

qrjkbowd  于 2022-12-23  发布在  其他
关注(0)|答案(6)|浏览(160)

我正在尝试使用OpenSSL客户端验证Ubuntu 10.10中Experian的SSL连接。

openssl s_client -CApath /etc/ssl/certs/ -connect dm1.experian.com:443

问题是连接关闭时返回Verify代码:21(无法验证第一个证书)。
我已检查证书列表,用于签署Experian(VeriSign 3类安全服务器CA - G3)的证书包含在列表中。

/etc/ssl/certs/ca-certificates.crt

然而我不知道为什么它不能验证第一个证书。
完整的回应可以在这里看到:https://gist.github.com/1248790

kqlmhetl

kqlmhetl1#

第一条错误消息告诉您有关问题的更多信息:
验证错误:num = 20:无法获取本地颁发者证书
终端实体服务器证书的颁发证书机构为
VeriSign 3级安全服务器CA-G3
仔细查看您的CA文件-您 * 不会 * 找到此证书,因为它是一个中间CA-您找到的是VeriSign的一个 * 名称相似 * 的G3公共主CA。
但是为什么另一个连接成功了,而这个却没有呢?问题是服务器配置错误(使用-debug选项,请参阅)。"好的"服务器在握手过程中发送整个证书链,从而为您提供必要的中间证书。
但是发生故障的服务器 * 只 * 向您发送最终实体证书,并且OpenSSL不能"即时"下载丢失的中间证书(通过解释授权信息访问扩展可以实现)。因此,使用s_client的尝试失败,但如果使用FireFox等浏览到相同的URL,则会成功(它确实支持"证书发现"功能)。
您可以选择在服务器端解决这个问题,方法是让服务器也发送整个链,或者将缺少的中间证书作为客户端参数传递给OpenSSL。

jm2pwxwz

jm2pwxwz2#

在埃博森的回答中加入更多信息。
简单地说,您的证书链中存在不正确的证书。
例如,您的证书颁发机构很可能会给您3个文件。

  • your_domain_name.crt
  • DigiCertCA.crt #(或证书颁发机构的名称)
  • TrustedRoot.crt

您很可能将所有这些文件合并到一个包中。

-----BEGIN CERTIFICATE----- 
(Your Primary SSL certificate: your_domain_name.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Intermediate certificate: DigiCertCA.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Root certificate: TrustedRoot.crt) 
-----END CERTIFICATE-----

如果您创建了捆绑包,但使用了旧的或不正确的中间证书版本(在我的示例中为DigiCertCA.crt),您将得到您所描述的确切症状。

从您的证书颁发机构重新下载所有证书并创建新的捆绑包。

pes8fvy9

pes8fvy93#

我在Amazon弹性负载均衡器示例上安装我的签名证书时遇到了同样的问题。
通过浏览器(Chrome)似乎都能找到,但通过我的Java客户端访问网站时产生了异常javax.net.ssl.SSLPeerUnverifiedException
我没有做的是在ELB示例上安装证书时提供一个“证书链”文件(参见https://serverfault.com/questions/419432/install-ssl-on-amazon-elastic-load-balancer-with-godaddy-wildcard-certificate
我们只收到了来自签名机构的签名公钥,所以我必须创建自己的证书链文件。使用浏览器的证书查看器面板,我导出了签名链中的每个证书。(证书链的顺序很重要,请参阅https://forums.aws.amazon.com/message.jspa?messageID=222086

j9per5c4

j9per5c44#

以下是您可以做的:-
Exim SSL证书
默认情况下,/etc/exim. conf将使用证书/密钥文件:

/etc/exim.cert
/etc/exim.key

所以如果你想知道在哪里设置你的文件,这就是地方。
它们由exim.conf的选项控制:

tls_certificate = /etc/exim.cert
tls_privatekey = /etc/exim.key

中级证书
如果您有CA根证书(CA包、CA链等),则需要将CA的内容添加到exim.cert中,位于实际证书之后。
也许一个好主意是确保你在其他地方有一份所有东西的副本,以防你出错。
Dovecot和ProFtpd也应该正确地读取它,所以Dovecot不再需要ssl_ca选项,所以对于这两种情况,都不需要对exim. conf或dovecot. conf(/etc/dovecot/conf/ssl. conf)进行任何更改

6ju8rftf

6ju8rftf5#

如果您使用的是MacOS用途:

sudo cp /usr/local/etc/openssl/cert.pem /etc/ssl/certs

在此“找不到信任锚”错误消失后

svgewumm

svgewumm6#

对于使用zerossl.com证书的用户,请将所有证书**(按原样)**拖放到其各自的文件夹中。
将文本剪切并粘贴到现有文件中可能会导致utf8问题-具体取决于操作系统、格式和字符间距。

相关问题