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

在python中使用请求时无法获取本地发行者证书

柯镜
2023-03-14
问题内容

这是我的代码

import requests;
url='that website';
headers={
  'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
};
r = requests.get(url,headers=headers);
print(r);
print(r.status_code);

然后它遇到了这个:

requests.exceptions.SSLError:

HTTPSConnectionPool(host ='www.xxxxxx.com‘,port = 44 3):

URL超过最大重试次数:xxxxxxxx(由SSLError(SSLCertVerificationError(1,’[[SSL:CERTIFICATE_VERIFY_FAILED]

证书验证失败:无法获取本地发行者证书(_ssl.c:1045)’)))

我该怎么办?


问题答案:

它不建议 使用verify = False您的组织环境。这实际上是禁用SSL验证。

有时,当您身处公司代理人后,它将用代理人证书替换证书链。在certifi使用的cacert.pem中添加证书应该可以解决此问题。我有类似的问题。这是我为解决问题所做的工作-

  1. 找到cacert.pem所在的路径-

如果没有,请安装certifi。命令:pip install certifi

import certifi
certifi.where()
C:\\Users\\[UserID]\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\certifi\\cacert.pem
  1. 在浏览器上打开URL。从URL下载证书链,并另存为Base64编码的.cer文件。

  2. 现在,在记事本中打开cacert.pem,然后在最后添加所有下载的证书内容(---Begin Certificate--- *** ---End Certificate---)。



 类似资料:
  • 这是我的密码 然后它遇到了这样一个问题: 请求。例外情况。SSLError: HTTPSConnectionpool(host='www.xxxxxx.com',port=44 3): 最大重试超过与url: xxxxxxxx(造成的SSLError(SSLCertVerizationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地发行者

  • 我正在尝试使用python从web获取数据。我导入了urllib。请求包,但在执行时,我得到错误: 我正在Mac OS High Sierra上使用Python 3.7 当我将URL更改为“http”时,我能够获取数据。但是,我相信,这可以避免检查SSL证书。 因此,我在互联网上查找并找到了一个解决方案:运行 这解决了我的问题。但是我对SSL之类的东西一无所知。你能帮我理解它到底做了什么来解决我的

  • 问题内容: 执行npm安装时出现错误: 我最近从一个较早的版本更新到了节点4,这听起来好像在出现此类问题时节点变得更加严格。 这里讨论了一个有关使用ca文件的问题,但这超出了我的理解,我不确定该怎么做。 我位于公司防火墙的后面,但是我可以不受限制地在浏览器中访问url。 有谁对这个问题有进一步的了解,有什么可能的解决方案? 我想知道与此同时恢复到节点0.12 :( 问题答案: 可以使用配置文件来配

  • 我已经在Windows Apache服务器上安装了Mandrill PHP API。当试图发送电子邮件使用下面的代码我得到的错误: Mandrill_HttpError-对消息/发送模板的API调用失败:SSL证书问题:无法获取本地颁发者证书 我不清楚Mandrill如何连接到我的本地颁发者证书。我的web服务器确实具有有效的证书,并且可以成功显示HTTPS页面。 有什么想法吗?

  • 我有一个简单的链设置,在这种情况下可以成功验证: 然而,在这些情况下,我会遇到错误: 特别是无法获得颁发者证书。 不知道该怎么做。 在这里他们说: OpenSSL无法为颁发者(或TLS握手期间从web服务器接收的链中第一个证书的颁发者)找到用于验证签名的本地证书。 此问题通常由日志消息表示,例如“无法获得本地颁发者证书”或“自签名证书”。当一个证书被验证时,它的根CA必须被OpenSSL“信任”,

  • 我已经在stackoverflow上尝试了很多解决这个问题的方法,不幸的是,到目前为止,没有任何方法对我有效。 它始于作曲家安装。我的env详细信息如下所示: > 操作系统:Windows 7 PHP V 7.1.10,XAMPP版本 我正在运行MINGW64(它是与git v2.1.5一起安装的) 卷曲--版本 curl 7.56.1(x86_64-w64-mingw32)libcurl/7.5