在 python 中使用带有请求的自签名证书

2024-03-28

情况 :目标站点(预产品 URL,例如https://my-pre-prod-site.com/login https://my-pre-prod-site.com/login,例如)正在使用自签名证书。 从浏览器中,可以通过 https 访问该站点,不会出现任何问题(通过将证书添加到浏览器中的信任存储区可以抑制自签名证书警告)

问题陈述 :使用请求对目标站点进行 get 调用的简单 python 脚本失败,并在不同情况下出现以下错误之一:

requests.exceptions.SSLError:[Errno 0] _ssl.c:344:错误:00000000:lib(0):func(0):reason(0)

or

requests.exceptions.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590) 使用的简单脚本(在 python 提示符下)是:

import requests
res = requests.get('https://my-pre-prod-site.com/login')

**已经尝试过的事情**

  1. I do NOT想要跳过 ssl 验证。因此, verify = false 对我来说不是一个选择。
  2. 我已经使用了下面的内容,但出现了同样的错误

res = requests.get('https://my-pre-prod-site.com/login', verify = os.path.join(os.getcwd(),'test.pem')其中 test.pem 是通过按顺序连接以下命令的输出创建的 pem 文件:

openssl rsa -in ~/Desktop/CertPath/private.key -check

and

openssl x509 -pubkey -noout -in ~/Desktop/CertPath/certificate.pem

该脚本从 ~/Desktop/CertPath 运行,因此 getcwd() 给出了证书的正确路径。

  1. 我还尝试了另一个 test.pem 文件,其中连接顺序相反。它仍然抛出相同的错误。
  2. 已尝试分别(单独)传递保存公钥的 .pem 文件和保存私钥的 .key 文件,结果与结果相同。

环境详细信息(如果有帮助)

操作系统 - El Capitan Mac
请求 - 2.9.0
Python - 2.7.10
Python 使用 OpenSSL -“OpenSSL 0.9.8zg 2015 年 7 月 14 日”

注意 - openssl 版本似乎不是问题。因为即使使用 openssl 的更新版本,错误也是相同的 - 在 Ubuntu 上测试 与使用 Openssl 1.x 的 Python 2.6


这个问题很老了,但以防有人想知道这里。

您将私钥和公钥放入 test.pem 中。这是错误的。验证参数需要的是它可以信任的证书。

res = requests.get('https://my-pre-prod-site.com/login', verify = os.path.join(os.getcwd(),'test.pem')

test.pem 应该包含所有受信任证书的列表。但是您在 test.pem 中提供的是您的公钥和私钥。您的 ~/Desktop/CertPath/certificate.pem 文件本身应该进入其中。

尝试这个:

res = requests.get('https://my-pre-prod-site.com/login', verify = '~/Desktop/CertPath/certificate.pem')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中使用带有请求的自签名证书 的相关文章

随机推荐

  • OnCollisionEnter() 在 Unity3D 中不起作用

    我有一个带有网格碰撞器的对象和一个带有球体碰撞器的预制件 我希望如果两者发生碰撞 预制件的实例就会被破坏 我在脚本中写了以下内容 private void OnCollisionEnter Collision c if c target D
  • 单线程应用程序是一种死技术吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • VB6的默认字体从哪里获取

    VB6从哪里得到的default字体来自 是系统字体吗 是由地区决定的吗 无论实际字体如何 它的大小总是相同吗 应用程序的字体在Font控件的属性 VB6默认有MS 无衬线字体 大小 8 这是 Windows 95 98 中的默认系统字体
  • 根据内容调整iframe高度

    我正在使用以下脚本自动调整 iframe 高度 function autoIframe frameId try frame document getElementById frameId innerDoc frame contentDocu
  • PHP 中有从数组中提取“列”的函数吗?

    我有一个数组的数组 具有以下结构 array array page gt page1 name gt pagename1 array page gt page2 name gt pagename2 array page gt page3 n
  • 如何在 Raphael 中使用 eve() ?

    有人可以给我一个拉斐尔的简单例子吗eve 我不太明白参数以及如何调用事件 我查了一下 但好像用过的人不多 事件功能的简单示例Rapha l http www raphaeljs com 我们定义将触发事件的函数 function bar v
  • javascript 数组的范围从 IE9 到 FireFox/Chrome 有所不同

    我已经缩小了我的基本问题的范围 从 IE9 到 FireFox 和 Chrome 数组的范围有所不同 在以下函数 仅摘录 中 我声明一个数组 然后通过调用 getJSON 来填充它 因为引用 HoldEm 的行出现在 ProcessArra
  • 查找此 XML 文档中的值的正确 XPath 查询是什么?

    假设我有这个 XML 文档
  • 在 Node.js 中休眠

    假设没有 本地 方法来实现这一点 我的解决方案是 sleep function time var stop new Date getTime while new Date getTime lt stop time return new Pr
  • OleDBConnection 连接字符串

    当我尝试这段代码时OleDBConnection open 不起作用 没有抛出任何错误 只需打开 Windows 窗体并说出任何内容我看到 messageBox try1 但程序没有显示 try2 我的连接字符串有什么问题请帮助我也尝试过
  • 如何在单个 SELECT 查询中设置多个 T-SQL 变量?

    我有3个变量 testid sampleid and clientid 我该如何设置 sampleid and clientid通过执行此查询一次 SELECT sample sampleid client clientid FROM db
  • 现在使用 async/await 安全吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 Javascript 中使用 async await 代替安全吗 现在生成器承诺 知道语法尚未制定并且 会随着 ES8 的发布而出现吗 我可
  • Gnuplot - 使用带有 png 终端的 replot

    我正在尝试在 Gnuplot 中使用带有 png 终端的 replot 如果我执行以下操作 我会在一张图表上绘制两个图 没有任何问题 plot sin x x replot sin x 现在 如果对 png 终端类型执行相同操作 则生成的
  • ignite服务器重新连接后如何恢复缓存

    如果有人能帮助我 我真的很感激 我有一个用Java编写的ignite服务器 还有一个用C 编写的客户端 客户端可以连接到服务器 并且可以正确获取服务器的缓存 服务器重新启动后 客户端会收到来自服务器的 EVT CLIENT NODE REC
  • 如何在 Windows 中使用 Sphinx 创建 PDF 文档

    我正在使用 Sphinx 在 Windows 中为我的 Python 项目创建文档 我需要生成 PDF 文档 我发现了很多关于如何在 Linux 中执行此操作的解释 但没有很好的解释如何在 Windows 中执行此操作 据我了解 我需要使用
  • 如何在MatLab中求曲线上一点的法向量

    我有一条曲线 我想找到该曲线上给定点的法线向量 稍后我必须找到该法线向量与另一个向量的点积 我尝试了MatLab的梯度函数 但我想当我们需要在特定点找到梯度时它不起作用 但我不确定我是否错了 请指导我如何在 MatLab 中实现这一目标 提
  • 创建一个 NSArray,初始化为 N 个对象,所有对象都是同一个对象

    我想创建一个具有相同值的对象的 NSArray 比如 NSNumber 全部初始化为 1 但计数基于另一个变量 除了处理 C 风格数组的初始化器之外 似乎没有一种方法可以使用 NSArray 的任何初始化器来执行此操作 知道是否有一种简短的
  • 从另一个域获取发布的数据时,ASP.NET Webform 丢失会话

    Simply 在网站中 用户登录并创建一些会话对象 网站 A 使用 Response Redirect 将用户重定向到网站 B 中的页面 网站 B 使用提交按钮将表单集合发布到网站 A 上的页面 在此特定点上 该特定用户的所有会话都会丢失
  • 配置文件、证书、应用程序 ID 和密钥之间的关系

    现在我只是想在手机上测试我的应用程序 而不是部署到商店 所有这些事情是如何关联的 由于我不想上传到商店 我可以忽略其中任何一个吗 我参加了大学开发者计划 我能够获得证书并将其安装在 Xcode 中 但构建仍然失败 解决这个问题只是改变应用程
  • 在 python 中使用带有请求的自签名证书

    情况 目标站点 预产品 URL 例如https my pre prod site com login https my pre prod site com login 例如 正在使用自签名证书 从浏览器中 可以通过 https 访问该站点