build.shibboleth.net为某些地区提供了错误的证书。

问题描述 投票:0回答:1

我们的一个Jenkins构建失败,试图连接到 build.shibboleth.net. 所以我做了一些分析。

请看这些来自2个地区的openssl结果。

在南亚地区。它给出的证书是 test.shibboleth.net,这是错误的。

$ openssl s_client -host build.shibboleth.net -port 443 -prexit -showcerts

CONNECTED(00000005)
depth=1 C = US, ST = Ohio, O = Shibboleth Consortium, CN = Shibboleth Project Intermediate CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=Ohio/O=Shibboleth Consortium/CN=test.shibboleth.net
   i:/C=US/ST=Ohio/O=Shibboleth Consortium/CN=Shibboleth Project Intermediate CA
...
...

在美国地区。它给出的证明是 shibboleth.net,这是正确的。

$ openssl s_client -host build.shibboleth.net -port 443 -prexit -showcerts

CONNECTED(00000005)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = shibboleth.net
verify return:1
---
Certificate chain
 0 s:CN = shibboleth.net
   i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
...
...

而且 resolveip build.shibboleth.net 给予 3.213.250.186 从两个地区。

为什么一个地区的证书给错了?我不知道如何解决这个问题。有什么好办法吗?

ssl dns openssl ssl-certificate shibboleth
1个回答
1
投票

我猜测上面的结果并不是由于地区依赖性造成的,而是你使用了不同版本的 openssl 在两台客户机上。

我们曾经在不同的IP地址上运行不同的vhosts。现在,一个地址用于所有的事情,我们依靠的是 SNI 来区分请求,以便返回正确的证书。

如果 openssl 客户端没有提供服务器名称,那么你可能会得到一个默认证书,而不是你所期望的。无论 openssl 是否如此取决于 openssl 使用中的(openssl version 1.1.1有,早期版本没有)。)

您可以尝试添加 -servername build.shibboleth.net 对你的 openssl 命令,看看是否会改变行为。

© www.soinside.com 2019 - 2024. All rights reserved.