python - 无法在 python 中加载 ssl 证书:TypeError: certfile should be a valid filesystem path
问题描述
我正在尝试使用 Python3 中的客户端证书(自签名)发送 POST 请求。该应用程序在 Docker 上运行(尽管它应该没有区别)。
当我尝试在上下文中加载证书和密钥文件时,出现以下错误。我已验证证书存在于文件系统中的路径 /app 中。这里出了什么问题?
TypeError: certfile 应该是一个有效的文件系统路径
这是我的代码:
import ssl
context = ssl._create_unverified_context()
context.load_cert_chain("/app/attendance.pem", "/app/key.pem")
conn = http.client.HTTPSConnection("someHost", 8200, context) # The error is thrown on this line
解决方案
conn = http.client.HTTPSConnection("someHost", 8200, context) # The error is thrown on this line
class http.client.HTTPSConnection(host, port=None, key_file=None, cert_file=None, [timeout, ] source_address=None, *, context=None, ...
基于此,第三个参数是key_file
。这意味着您的context
将被解释为关键。这会导致您看到错误消息,因为上下文不是有效路径。与其使用(错误的)位置参数,context
不如使用(正确的)命名参数:
conn = http.client.HTTPSConnection("someHost", 8200, context = context)
推荐阅读
- sql - 一个组的每小时总平均数
- powershell - 在 Powershell 中的同一个文本文件中写入和加载
- powershell - 创建远程打印机添加工具
- python - 使用 Dask to_datetime 和 Pandas 日期偏移
- python - 在加载模块时从模块返回
- vuetify.js - 如何确保 vuetify 的下拉菜单具有最高的 z-index?
- python - 根据条件在熊猫数据框的每一行中分配值
- api - 对 Sabre api 数据馈送使用预制解决方案,特别是对销售人员
- angular - 在 ViewContainerRef.createComponent + OnPush 内未触发 Angular 组件生命周期
- kotlin - Android Studio 单元测试 | Days.daysBetween 随机失败