Aut*_*ner 4 python ssl python-requests
我想使用从服务器生成的证书从客户端向服务器进行身份验证。我有一个 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
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法,但出现了一些异常,有人可以帮助解决这个问题吗?
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)
Run Code Online (Sandbox Code Playgroud)
res=requests.get('https://...', cert='/certificateTests/katello-server-ca.crt', verify=True)
Run Code Online (Sandbox Code Playgroud)
cert
中的参数用于requests.get
指定用于相互身份验证的客户端证书和密钥。--cacert
它不像curl 中的参数那样用于指定受信任的CA。相反,你应该使用verify
参数:
res=requests.get('https://...', verify='/certificateTests/katello-server-ca.crt')
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅文档中的SSL 证书验证和客户端证书requests
。
归档时间: |
|
查看次数: |
5189 次 |
最近记录: |