无法验证证书,sha256sum 失败,最近更新了 openssl

无法验证证书,sha256sum 失败,最近更新了 openssl

现在可以正常工作了,请参见最后 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 更新不太可能导致此问题。 这些证书很可能无效。如果您需要更多详细信息,可以提供示例。

相关内容