我正在编写一个简单的脚本,其中包括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
要使用的CA文件名可以通过
verify
传递:如果使用
verify=True
,则requests
使用自己的CA集,该CA集可能没有签署服务器证书的CA。您遇到的问题是由不受信任的SSL证书引起的。
像前面的注释中提到的@dirk一样,最快的修正是设置
verify=False
:请注意,这将导致证书无法验证。这将使您的应用程序面临安全风险,例如中间人攻击。
当然,运用判断。正如评论中提到的,这个对于快速/一次性应用程序/脚本,是可以接受的,但实际上不应该转到生产软件。
如果仅跳过证书检查在您的特定上下文中是不可接受的,请考虑以下选项,最好的选项是将
verify
参数设置为一个字符串,该字符串是证书的.pem
文件的路径(您应该通过某种安全方式获得该文件)。因此,从2.0版开始,
verify
参数接受以下值,并使用它们各自的语义:True
:根据库自己的受信任证书颁发机构验证证书(注意:您可以通过Certifi库查看哪些根证书请求使用,Certifi库是从请求中提取的RCs的信任数据库:Certifi - Trust Database for Humans)。False
:完全忽略证书验证。来源:Requests - SSL Cert Verification
还要查看同一链接上的
cert
参数。来自请求documentation on SSL verification:
如果不想验证SSL证书,请将
verify=False
相关问题 更多 >
编程相关推荐