簡體   English   中英

Python請求模塊中的SSLError

[英]SSLError in Python requests module

我想使用從服務器生成的證書從我的客戶端向服務器進行身份驗證。我有一個 server-ca.crt,下面是正在工作的 CURL 命令。如何使用 python requests 模塊發送類似的請求。

$ curl -X GET -u sat_username:sat_password \
-H "Accept:application/json" --cacert katello-server-ca.crt \
https://satellite6.example.com/katello/api/organizations

我嘗試了以下方法,但出現了一些異常,有人可以幫助解決此問題。

 python requestsCert.py
Traceback (most recent call last):
  File "requestsCert.py", line 2, in <module>
    res=requests.get('https://satellite6.example.com/katello/api/organizations', cert='/certificateTests/katello-server-ca.crt', verify=True)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 68, in get
    return request('get', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 464, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL] PEM lib (_ssl.c:2554)
res=requests.get('https://...', cert='/certificateTests/katello-server-ca.crt', verify=True)

requests.getcert參數用於指定用於相互身份驗證的客戶端證書和密鑰。 它不像 curl 中的--cacert參數那樣用於指定受信任的 CA。 相反,您應該使用verify參數:

res=requests.get('https://...', verify='/certificateTests/katello-server-ca.crt')

有關更多信息,請參閱requests文檔中的SSL 證書驗證客戶端證書

暫無
暫無

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

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