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一样,quickest修正是设置verify=False
请注意,这将导致证书不被验证。 这将使您的应用程序面临安全隐患,例如中间人攻击。
当然应用判断。正如评论中所提到的,这个may对于快速/一次性的应用程序/脚本but really should not go to production software是可以接受的。
如果只是跳过证书检查在您的特定上下文中是不可接受的,请考虑以下选项,最佳选项是将verify参数设置为证书的.pem文件路径的字符串(您应该通过某种安全手段获得)。
因此,从版本2.0开始,verify参数将接受以下值及其各自的语义:

  •  True:使证书对图书馆自己的受信任的证书颁发机构进行验证(注意:您可以通过Certifi库查看哪些根证书请求,从请求中提取RC的信任数据库:Certifi – Trust Database for Humans)。
  •  False:绕过证书验证completely
  • CA_BUNDLE文件的路径,用于验证证书的请求。

来源:Requests – SSL Cert Verification
另请参阅同一链接上的cert参数。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python Requests throwing up SSLError

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

4 + 5 =