Python请求抛出SSLError
我正在研究一个简单的脚本,涉及CAS,jspring安全检查,重定向等。我想使用Kenneth Reitz的python请求,因为这是一项很棒的工作!但是,CAS需要通过SSL进行验证,因此我必须首先通过该步骤。我不知道Python请求是什么?该SSL证书应该存放在哪里?
Traceback (most recent call last): File "./test.py", line 24, in <module>
response = requests.get(url1, headers=headers)
File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 209, in request
File "build/bdist.linux-x86_64/egg/requests/models.py", line 624, in send
File "build/bdist.linux-x86_64/egg/requests/models.py", line 300, in _build_response
File "build/bdist.linux-x86_64/egg/requests/models.py", line 611, in send
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
回答:
你遇到的问题是由不受信任的SSL证书引起的。
就像之前评论中提到的@dirk
一样,最快的解决方法是设置verify=False
:
requests.get('https://example.com', verify=False)
请注意,这将导致证书不被验证。这将使你的应用程序面临安全风险,例如中间人攻击。
当然要运用判断力。正如在评论中提到的,这可能是为快速/一次性应用程序/脚本可以接受的,但真的不应该去制作软件。
如果在特定情况下仅跳过证书检查是不可接受的,请考虑以下选项,最好的选择是将verify
参数设置为字符串,该字符串是.pem
证书文件的路径(应通过某种安全方法获取该字符串)手段)。
因此,从2.0版开始,该verify参数接受以下值以及它们各自的语义:
True
:使证书根据库自身的受信任证书颁发机构进行验证(注意:你可以通过Certifi库查看哪些根证书请求使用,Certifi库是从Requests:Certifi-Human Trust Database中提取的RC的信任数据库)。False
:完全绕过证书验证。CA_BUNDLE
文件的路径,供请求用于验证证书。
以上是 Python请求抛出SSLError 的全部内容, 来源链接: utcz.com/qa/406906.html