簡體   English   中英

Python請求模塊。 SSL證書驗證錯誤

[英]Python requests Module. SSL Cert Verification bug

我正在嘗試使用請求模塊向需要ssl身份驗證的端點發出發布請求。 我的pem文件位於指定的路徑中,並且包含客戶端證書和私鑰。 但是,我一直收到“證書驗證失敗”異常。 我在nginx日志中看到該請求從未在此發出。 有人有什么想法嗎? 我知道證書應該起作用。

params = {    
          "param_2" : "32100",
          "param_1" : "abc"
          }

headers = {
           "Content-Type" : "application/json"
          }
body = json.dumps(params)

r = requests.post(
                  https://somesite.com/somepath,
                  data=body,
                  headers=headers,
                  timeout=10,
                  verify="/path/to/cert.pem"
                  )

Traceback (most recent call last):
File "./somefile.py", line 264, in <module>
    start()
File "./somefile.py", line 149, in start
    verify="/path/to/cert.pem"
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 88, in post
    return request('post', url, data=data, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 448, in    request
    resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 554, in send
   r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 417, in send
   raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL     routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

從請求文檔:

如果將verify設置為False,則請求也可以忽略驗證SSL證書。

requests.get(' https ://kennethreitz.com',verify = False)

默認情況下,verify設置為True。 選項驗證僅適用於主機證書。

您還可以指定本地證書用作客戶端證書,單個文件(包含私鑰和證書)或用作兩個文件路徑的元組:

requests.get(' https ://kennethreitz.com',cert =('/ path / server.crt','/ path / key'))

所以看來您剛把args弄錯了。 嘗試使用“證書”而不是驗證。

暫無
暫無

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

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