首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么curl与software.download.prss.microsoft.com之间存在信任问题,而不是wget呢?

为什么curl与software.download.prss.microsoft.com之间存在信任问题,而不是wget呢?
EN

Unix & Linux用户
提问于 2022-04-12 13:31:10
回答 1查看 642关注 0票数 4

以下URL重定向到microsoft.com子域:https://tb.rg-adguard.net/dl.php?go=3dd1ce66,即指向https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=... (...是一个随机令牌)

通过运行以下命令,我能够获得最终的重定向URL:

代码语言:javascript
运行
复制
curl -LsI -o /dev/null -w %{url_effective} "https://tb.rg-adguard.net/dl.php?go=7e583fea

但是不管我是运行wget https://tb.rg-adguard.net/dl.php?go=3dd1ce66还是wget https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=...................

我总是收到在使用Firefox下载文件时没有得到的证书错误。

代码语言:javascript
运行
复制
wget https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso\?t\=...................
--2022-04-12 14:57:29--  https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=..........................
Resolving software.download.prss.microsoft.com (software.download.prss.microsoft.com)... 152.199.21.175, 2606:2800:233:1cb7:261b:1f9c:2074:3c
Connecting to software.download.prss.microsoft.com (software.download.prss.microsoft.com)|152.199.21.175|:443... connected.
ERROR: The certificate of ‘software.download.prss.microsoft.com’ is not trusted.

为什么不同应用程序之间的行为不一致(Firefox vs wget)。实际上是否有理由不信任该证书(如果是的话,为什么Firefox没有捕捉到该证书),或者wget是错误的?

我在Wget1.21.2和Firefox98.0中使用Fedora 35 x64。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-04-20 10:45:17

什么坏了

在这个已知的问题上,你似乎被绊倒了:https://github.com/dotnet/core/issues/6830,最后一条评论是:

从OneOCSP方面更新:由于新的CAB论坛要求,OneOCSP将在2022-5-31年将算法切换到SHA-256。

根据这个问题,wget (GnuTLS)拒绝接受微软证书,因为它有一个OCSP URI:http://oneocsp.microsoft.com/ocsp,oneocsp.microsoft.com正在与SHA1签署响应。SHA1折旧,强烈禁止在签名中使用。

可以说,wget通过保护你的安全来做正确的事情。多年来,SHA1一直被认为是不安全的,使用它来签署证书已经有几年了。

这实际上是相当令人惊讶的,它没有被发现和修复得更快;但是我想OCSP对用户来说比x509证书本身要少得多。

,为什么这是个问题?

OCSP解决了在证书过期之前撤销证书的问题。证书可以包含指向服务器的OCSP URL。客户端将读取此信息,并要求服务器验证证书是否仍然有效,并且尚未被撤销。

服务器签署一个响应以表示证书是有效的,并且该响应会很快过期(秒或分钟)。因此,即使证书本身是有效的,OCSP服务器仍然需要在那里确认它。

但微软的OCSP服务器表现不好.

数字签名实际上为文档签名了一个数字指纹,而SHA1以前用于创建指纹。但是人们已经发现了一种方法来制作一个与现有的SHA1指纹匹配的新文档,这样他们就可以伪造一个看起来与现有签名匹配的文档了!

因此,GNUTLS拒绝信任某些微软证书,因为它拒绝信任来自微软OCSP服务器的SHA1签名响应。因此,它不能确定证书本身是否已被撤销。

展示了我的工作.

我能够用openssl确认证书的OCSP URL。首先,通过获取证书:

代码语言:javascript
运行
复制
openssl s_client -showcerts -servername software.download.prss.microsoft.com -connect software.download.prss.microsoft.com:443 </dev/null

然后将证书复制粘贴到文件中,然后用以下内容读取它们:

代码语言:javascript
运行
复制
openssl x509 -in <filename> -text

如果你想知道谷歌是怎么把我引向帽子问题的:

我运行wget时启用了gnutls调试选项:

代码语言:javascript
运行
复制
GNUTLS_DEBUG_LEVEL=2 wget --verbose https://tb.rg-adguard.net/dl.php?go=3dd1ce66

这将给出一个非常长的调试输出,最后如下所示:

代码语言:javascript
运行
复制
gnutls[2]: looking for key purpose '1.3.6.1.5.5.7.3.1', but have '1.3.6.1.5.5.7.3.4'
ERROR: The certificate of ‘software.download.prss.microsoft.com’ is not trusted.

虽然这个错误是误导性的,但它给了我更多关于谷歌的东西。

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/698856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档