当前位置: 首页 > 面试题库 >

Python请求SSL错误-证书验证失败

储志业
2023-03-14
问题内容

这段代码

import requests
requests.get("https://hcaidcs.phe.org.uk/WebPages/GeneralHomePage.aspx")

给我这个错误

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

我对SSL几乎一无所知,但我曾尝试下载该站点的证书并使用该verify选项指向该文件,但是它没有用。我想念什么吗?


问题答案:

正如评论中已经指出的那样:从SSLLabs报告中可以看出,该网站的SSL实施不正确。该报告中有关您的问题的主要部分是:

该服务器的证书链不完整。等级上限为B。

这意味着服务器没有发送验证证书所需的完整证书链。这意味着您需要在验证时自行添加丢失的证书。为此,您需要为丢失的链证书C = US,O = DigiCert
Inc,OU = www.digicert.com,CN = DigiCert SHA2 High Assurance Server
CA

以及根CA
C = US,O = DigiCert Inc,OU = www.digicert.com,CN =
DigiCert高保证EV根CA信息文件my_trust_store.pem,然后您可以调用:

requests.get("https://...", verify='my_trust_store.pem')

…但是我尝试下载站点的证书并使用verify选项指向该文件

这不适用于普通的叶子证书。由于Python的SSL堆栈基于OpenSSL,并且OpenSSL期望信任存储区中只有受信任的证书颁发机构(即给出verify),而服务器证书不是CA证书,因此它无助于将其添加到信任存储区中。



 类似资料:
  • 误差 PHP警告:stream_socket_client():SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_Server_Certifice:证书验证失败

  • 问题内容: 在Windows Vista SP2 + Python 2.7.10上,我可以连接到https://www.python.org,但不能连接到https://codereview.appspot.com 剧本: 并输出: 如何解决问题,https://codereview.appspot.com/到底有什么问题? 问题答案: 我的猜测是,它与OpenSSL中的替代链处理有关,如Pyth

  • 当我想要在cPanel上安装证书时,我会看到以下错误: 错误证书验证失败! 已执行/usr/bin/openssl verify-capath/var/cpanel/ssl/installed/cabundles: stdin:CN=example.com 0深度查找时错误20:无法获取本地颁发者证书

  • 问题内容: 我陷入了持续的SSL验证问题。 SSL:CERTIFICATE_VERIFY_FAILED 我在构建让用户使用Mozilla Persona进行身份验证的Django应用程序时发现了错误。 我得到一个追溯从到到: python3和python2之间的区别 这就是它开始变得有趣的地方:使用python2.7时,我没有遇到相同的问题: 我的第一个想法是这两个版本的证书可能使用不同的证书[1

  • 我使用Let's encrypt free SSL(默认情况下,我的主机提供商支持它),我检查了我在SSLShopper.com的网站(唯一的警告是:)和https://www.geocerts.com/SSL_checker。结果是我的网站通过了所有测试,除了。所以我不认为问题出在证书上,据我所知,telegram接受自签名证书。 我曾尝试在https://core.telegram.org/b