微软在半个月前更新了其用于 Windows 的软件包管理器 WinGet 至 1.4 版本,这个版本带来了不少新的功能,其中最大的变化就是增加了对 .zip
文件的支持。只不过微软似乎只顾着埋头苦干增加新功能,而忽视了证书即将过期这件事情。
从 2 月 12 日起,不少 WinGet 用户报告,在他们尝试通过 WinGet 安装或升级应用程序时出现了无法正常使用的情况,WinGet 弹出了 "InternetOpenUrl() failed" 这样的错误提示。
通过调查发现,WinGet 的 SSL 证书也就是在当天过期了(如下图)。
在当时,根据 GitHub 用户 qilme 给出的解决方法,WinGet 用户需要使用以下命令将新的源 URL 添加进源列表即可,这样 WinGet 就可以使用其他服务器来获取软件包更新:
sudo winget source add -n winget <https://winget.azureedge.net/cache
之后,GitHub 用户通过查看证书透明度日志还发现,微软在过去的一年时间里实际上已经为 WinGet 多次更新证书,最近一次还是在 2022 年 11 月。
微软开发者 @denelon 在了解到这个问题后表示,他们在 11 月确实更新了证书,但该证书却没有被正确配置,目前他们也还不确定是编写的代码有 bug,还是说有什么其他原因,他们将会进一步调查这个问题。
虽然这个问题的原因目前我们还不清楚,但好消息是证书已经完成更新,如果之前有用户使用了上面的命令修改了设置的话,那么可以运行 winget source reset --force
来恢复默认设置。