28

Pythonでリクエストを使用してREST APIを呼び出していますが、これまでのところ、設定すると成功していますverify=False

ここで、認証のためにインポートする必要があるクライアント側の証明書を使用する必要があり、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してキーを取得しようとしましたが.pemSSL: CERTIFICATE_VERIFY_FAILED

誰かが証明書をインポートする方法とそれをどこに置くか教えてもらえますか? 検索してみましたが、それでも同じ問題に直面しました。

4

2 に答える 2

66

私はこれと同じ問題を抱えていました。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)
于 2013-07-11T21:46:10.777 に答える