用于发送带有证书、私有加密密钥和密码的请求的Python代码

bos*_*ari 4 python urllib3

我正在尝试从 https 调用获取响应,该调用已在其端安装了证书。这是我的代码

import requests
import urllib3

urllib3.disable_warnings()

cert_file_path = "/path/output-crt-file-name.crt"
key_file_path = "/path/output-key-file-name.key"
passwd = 'secretpass'
print(passwd)
url = "https://url/to/fetch/response"
params = {"AppID": "xxxx", "Safe": "xxxx", "Folder": "Root",
          "Object": "xxxx"}
cert = (cert_file_path, key_file_path, passwd)
r = requests.get(url, params=params, cert=cert, verify=True )
print(r.text)
Run Code Online (Sandbox Code Playgroud)

这会引发错误

由 SSLError('客户端私钥已加密,需要密码'引起)

请建议。

Mic*_*obi 5

恐怕 requests 目前不支持使用加密的私钥,请参阅https://2.python-requests.org/en/master/user/advanced/#client-side-certificates

您的本地证书的私钥必须未加密。目前,Requests 不支持使用加密密钥。

请参阅https://security.stackexchange.com/questions/59136/can-i-add-a-password-to-an-existing-private-key了解如何删除密钥加密的说明。