现在可以正常工作了,请参见最后 2 条编辑
最近我多次遇到 sha256sum 失败或无法验证证书的情况。使用 wget、winetricks 和 lutris 时都发生过这种情况。使用 Firefox 时从未发生过这种情况。
我最近将 openssl 升级到了 1.1.1c。我不确定这是否是原因。
有人知道我该如何解决我的问题吗?安装 openssl 后我还需要做些其他事情吗?或者有没有办法检查以确保 /etc/ssl/certs 中的证书正确?
编辑1:
使用 wget 的两个示例
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
--2019-06-25 18:56:33-- https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.184.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.184.133|:443... connected.
ERROR: cannot verify raw.githubusercontent.com's certificate, issued by ‘CN=DigiCert SHA2 High Assurance Server CA,OU=www.digicert.com,O=DigiCert Inc,C=US’:
Unable to locally verify the issuer's authority.
To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'.
和
wget https://dl.google.com/dl/android/studio/ide-zips/3.4.1.0/android-studio-ide-183.5522156-linux.tar.gz
--2019-06-25 19:08:19-- https://dl.google.com/dl/android/studio/ide-zips/3.4.1.0/android-studio-ide-183.5522156-linux.tar.gz
Resolving dl.google.com (dl.google.com)... 2607:f8b0:4009:807::200e, 172.217.9.78
Connecting to dl.google.com (dl.google.com)|2607:f8b0:4009:807::200e|:443... connected.
ERROR: cannot verify dl.google.com's certificate, issued by ‘CN=Google Internet Authority G3,O=Google Trust Services,C=US’:
Unable to locally verify the issuer's authority.
To connect to dl.google.com insecurely, use `--no-check-certificate'.
编辑 2:
添加ca_certificate=/etc/ssl/certs/ca-certificates.crt
以/etc/wgetrc
修复 wget 的问题。不过,我有时仍会遇到其他程序的问题。我想知道更新 openssl 时是否删除了某些系统链接。我应该提到,我按照 openssl 网站上的说明从源代码构建了 openssl。我没有使用包管理器,因为我需要的版本尚未在那里提供。
编辑 3:
这是一个 lutris 无法通过 python 3 urllib 验证证书的示例
2019-06-25 19:36:04,485: Error while completing task <function fetch_script at 0x7f0533fd1730>: Unable to connect to server https://lutris.net/api/installers/hearthstone-dx11-to-vulkan-dxvk: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
<class 'lutris.util.http.HTTPError'> Unable to connect to server https://lutris.net/api/installers/hearthstone-dx11-to-vulkan-dxvk: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>
File "/usr/lib/python3/dist-packages/lutris/util/jobs.py", line 30, in target
result = self.function(*args, **kwargs)
File "/usr/lib/python3/dist-packages/lutris/installer/interpreter.py", line 56, in fetch_script
request.get()
File "/usr/lib/python3/dist-packages/lutris/util/http.py", line 81, in get
raise HTTPError("Unable to connect to server %s: %s" % (self.url, error))
编辑 4:
我成功了!我需要添加一个系统链接,从/etc/ssl/certs
到,/usr/local/ssl/certs
这肯定是在我升级 openssl 时被删除的,
这也修复了我在使用 winetricks 时遇到的 sha256sum 问题
编辑 5:实际上,/usr/local/ssl/certs
从未被删除。它只是从未存在过。我曾在旧版本的 openssl 中查找证书/usr/lib/ssl/certs
。升级后,它在中查找它们/usr/local/ssl/certs
。我能够使用命令检查这一点openssl version -d
答案1
获取 OpenSSL 使用的当前目录:
openssl version -d
将所有旧证书复制到当前目录。通常的旧目录是/etc/ssl/certs
:
cp -P /etc/ssl/certs /usr/local/ssl/certs
答案2
总和不会过期。它们将一组数据标识为一个合理且唯一的值。某个人(您信任的人)拥有这些文件并创建了一个标识符(哈希/总和)。然后存储该标识符,以便您以后检索文件时可以确认它是完全相同的文件。您下载了一个与原始文件完全不匹配的文件,您必须确定如何处理不受信任的文件。使用总和的一个典型示例是当您访问 Ubuntu 下载页面时,系统会向您显示如何验证当前映像:
echo "2da6f8b5c65b71b040c5c510311eae1798545b8ba801c9b63e9e3fd3c0457cbe *ubuntu-19.04-desktop-amd64.iso" | shasum -a 256 --check
在这种情况下,您将安全地 (https) 获取经过验证的金额,然后使用它来验证 ISO 的完整性。这样您就可以从镜像中下载 ISO,并且知道它没有被篡改。
OpenSSL 更新不会对此产生影响。
至于证书故障,网站可能没有及时更新证书。忘记了证书,也没有进行更新。证书默认会过期,需要维护,所以这种情况是有可能发生的。如果您可以获得文件的 URL,则可以自行检查证书。虽然这看起来没什么问题,但未维护的服务器可能会出现更大的问题,导致其提供的文件不安全。
OpenSSL 更新不太可能导致此问题。 这些证书很可能无效。如果您需要更多详细信息,可以提供示例。