以下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:
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下载文件时没有得到的证书错误。
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。
发布于 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。首先,通过获取证书:
openssl s_client -showcerts -servername software.download.prss.microsoft.com -connect software.download.prss.microsoft.com:443 </dev/null
然后将证书复制粘贴到文件中,然后用以下内容读取它们:
openssl x509 -in <filename> -text
如果你想知道谷歌是怎么把我引向帽子问题的:
我运行wget
时启用了gnutls调试选项:
GNUTLS_DEBUG_LEVEL=2 wget --verbose https://tb.rg-adguard.net/dl.php?go=3dd1ce66
这将给出一个非常长的调试输出,最后如下所示:
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.
虽然这个错误是误导性的,但它给了我更多关于谷歌的东西。
https://unix.stackexchange.com/questions/698856
复制相似问题