卷曲,证书的所有者与主机名不匹配 [关闭]
Posted
技术标签:
【中文标题】卷曲,证书的所有者与主机名不匹配 [关闭]【英文标题】:Curl, the certificate's owner does not match hostname [closed] 【发布时间】:2021-12-20 15:59:03 【问题描述】:我有一个网站。
我试图让人们将他们网站上的文件下载到他们自己的机器上。
为了做到这一点,他们会做 curl 或 wget。
它以前总是可以工作,但现在突然运行它们是这样的:
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 update 和 upgrade,然后执行 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)以上是关于卷曲,证书的所有者与主机名不匹配 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Android HttpClient - 证书中的主机名不匹配 <example.com> != <*.example.com>
IBM Worklight Server 6.1 - 到后端的适配器 - javax.net.ssl.SSLException:证书中的主机名不匹配