簡體   English   中英

Python 請求 - 客戶端證書的 SSL 錯誤

[英]Python Requests - SSL error for client side cert

我正在調用 REST API 並在 python 中提出請求,到目前為止,當我設置verify=False時已經成功。

現在,我必須使用需要導入的客戶端證書進行身份驗證,每次使用cert (.pfx). cert.pfx cert (.pfx). cert.pfx受密碼保護。

r = requests.post(url, params=payload, headers=headers, 
                  data=payload, verify='cert.pfx')

這是我得到的錯誤:

Traceback (most recent call last):
File "C:\Users\me\Desktop\test.py", line 65, in <module>
r = requests.post(url, params=payload, headers=headers, data=payload, verify=cafile)
File "C:\Python33\lib\site-packages\requests\api.py", line 88, in post
return request('post', url, data=data, **kwargs)
File "C:\Python33\lib\site-packages\requests\api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python33\lib\site-packages\requests\sessions.py", line 346, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python33\lib\site-packages\requests\sessions.py", line 449, in send
r = adapter.send(request, **kwargs)
File "C:\Python33\lib\site-packages\requests\adapters.py", line 322, in send
raise SSLError(e)
requests.exceptions.SSLError: unknown error (_ssl.c:2158)

我也嘗試過 openssl 來獲取.pem和密鑰,但使用.pem並獲取SSL: CERTIFICATE_VERIFY_FAILED

有人可以指導我如何導入證書以及將其放置在哪里? 我嘗試搜索但仍然面臨同樣的問題。

我有同樣的問題。 verify參數指的是服務器的證書。 您希望cert參數指定您的客戶端證書。

import requests
cert_file_path = "cert.pem"
key_file_path = "key.pem"

url = "https://example.com/resource"
params = {"param_1": "value_1", "param_2": "value_2"}
cert = (cert_file_path, key_file_path)
r = requests.get(url, params=params, cert=cert)

我遇到了同樣的問題,為了解決這個問題,我知道我們必須將 RootCA 連同證書及其密鑰一起發送,如下所示,

response = requests.post(url, data=your_data, cert=('path_client_certificate_file', 'path_certificate_key_file'), verify='path_rootCA')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM