卷曲,证书的所有者与主机名不匹配 [关闭]

Posted

技术标签:

【中文标题】卷曲,证书的所有者与主机名不匹配 [关闭]【英文标题】:Curl, the certificate's owner does not match hostname [closed] 【发布时间】:2021-12-20 15:59:03 【问题描述】:

我有一个网站。

我试图让人们将他们网站上的文件下载到他们自己的机器上。

为了做到这一点,他们会做 curlwget

它以前总是可以工作,但现在突然运行它们是这样的:

wget https://somedomain/somefile.sh;

--2021-11-07 17:26:05--  https://somedomain/somefile.sh
Resolving some_domain (some_domain)... some_ip_address
Connecting to some_domain (some_domain)|ip_address|:443... connected.
ERROR: The certificate of ‘some_domain’ is not trusted.
ERROR: The certificate of ‘some_domain’ doesn't have a known issuer.
The certificate's owner does not match hostname ‘some_domain’

还有卷曲:

curl https://somedomain/somefile.sh 1>文件;

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it.

我在自己的机器上可以下载,但在其他机器上却不能。似乎它适用于某些机器而不适用于其他机器。

我尝试在服务器上执行 sudo apt-get updateupgrade,然后执行 sudo service nginx restart,然后重新启动。 没有改变任何东西。

我也更新了证书,尽管它声称这是不必要的。没有改变这个。

我也尝试过用谷歌搜索它,但我没有找到答案,我真的不明白我应该怎么做才能让它发挥作用。

我不知道如何解决这个问题。

我该如何解决这个问题?

任何提示将不胜感激。 即使只是朝着正确的方向推进。

【问题讨论】:

你在使用 LetsEncrypt 吗? 是的。____________ 那你可能是LetsEncrypt RootCA expiry的受害者。 我读到了,但我仍然不知道该怎么做。底线,“必须信任 ISRG Root X1”。但我不知道该怎么做。 我已经尝试用谷歌搜索,但无济于事。 【参考方案1】:

开始前请检查被解析的IP是否正确,The certificate's owner does not match hostname ‘some_domain’的投诉可能是访问错误服务器的信号。当访问serverA时,他们收到serverB的IP,当建立与错误IP的连接时,乳清会向服务器请求证书,他们将收到serverB证书,他们不会喜欢,因为他们期待serverA,所以他们抱怨主机名不匹配。

【讨论】:

我已经读了很多,但我仍然不知道我应该做什么。我的问题是我不能从我的网站上卷曲。你一直说“检查证书”,但我不知道为什么我应该这样做,我真正检查的是什么?以及如何使 curl-from-website 工作? 我更新了答案,更详细地解释了为什么必须检查证书。现在它可能是错误的一面,太解释了。 是的,我读过它,但我仍然不知道我应该做什么。检查一些证书。但喜欢,为了什么。为什么? 您的抱怨是与您的服务器交谈的人拒绝这样做。他们拒绝是因为他们不信任你。为什么不呢?让我们看看你为他们提供了哪些证书,看看他们为什么抱怨。 当您访问https://yourdomain.tld/somepath 时,首先发生的事情之一就是交换了证书。当您使用curl -v 时,您会看到更多这种交流【参考方案2】:

以前总是有效,但现在突然出现

那么我猜你的 HTTPS 证书这些天可能已经过时(过期)了。你应该更新你的证书。

如果您只是本网站的用户,或者测试网络服务器的可用性,您可以使用-k 参数为curl--no-check-certificate 参数为wget

但现在你是网站管理员,你应该检查证书并修复它。

由于您没有发布主机 URL,因此我们无法猜测或帮助您进行测试。但是我想到了expiry of LetsEncrypt at September this year(2021),然后我知道您可能遇到了同样的问题。使用浏览器查看您的网站,并从“其他机器”检查错误,从“但在其他机器上无法正常工作”中的“其他机器”。

【讨论】:

我已经更新了证书。系统说这是不必要的,但我还是这样做了。 wget 与 --no-check-certificate 也不起作用。我只是得到一些完全不同的文档,其中包含一些未知的反应代码。 最后一段实在看不懂。 关于最后一个网址。我读了,我仍然不知道该怎么做。底线,“必须信任 ISRG Root X1”。但我不知道该怎么做。 我试过谷歌搜索无济于事。【参考方案3】:

只有当存在已知有效的证书链,返回到已知的有效证书颁发者时,证书才有效。

在您的工作站上,您已经建立了证书链:也许您有一个在该工作站上有效的自行颁发的证书,或者您之前已经加载了证书链。

由于我们看不到证书,我们无法告诉您颁发者是谁、链是什么,或者要加载什么。

您需要检查被拒绝的证书,看看它需要什么。

【讨论】:

这个证书在哪里? 使用 https 查询时,证书来自服务器。它必须与您的证书存储中的证书相匹配。 我不清楚我需要做什么。我的证书存储在哪里?那是我电脑上的某个文件夹吗?该网站在我的电脑上。 @john-jones 您可以通过在 curl 上运行 strace 来获取证书存储(我相信有更好的方法),但要检查服务器发送的证书,请检查 ***.com/a/7886248/1067003 / openssl @john-jones(我知道 openssl 可以为您提供有关 https 服务器证书所需的所有信息,但是当我出于某种原因需要检查 https 服务器证书时,我只使用Firefox)

以上是关于卷曲,证书的所有者与主机名不匹配 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java SSLException:证书中的主机名不匹配

AWS SSL Beanstalk 主机名不匹配

Android HttpClient - 证书中的主机名不匹配 <example.com> != <*.example.com>

IBM Worklight Server 6.1 - 到后端的适配器 - javax.net.ssl.SSLException:证书中的主机名不匹配

Apache2 错误:通过 SNI 和 HTTP 提供的主机名不匹配

python easy install时,使用aliyun阿里云镜像提示主机名不匹配的问题