Python 请求抛出 SSLError

标签 python ssl python-requests urllib3

我正在编写一个涉及 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)

请注意,这将导致证书无法验证。 这会使您的应用程序面临安全风险,例如中间人攻击。

当然,应用判断。如评论中所述,这可能对于快速/一次性应用程序/脚本是可以接受的,但实际上不应该用于生产软件

如果只是跳过证书检查在您的特定上下文中是 Not Acceptable ,请考虑以下选项,您最好的选择是将 verify 参数设置为一个字符串,该字符串是 的路径.pem 证书文件(您应该通过某种安全方式获得)。

因此,从 2.0 版开始,verify 参数接受以下值及其各自的语义:

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

来源:Requests - SSL Cert Verification

另请查看同一链接上的 cert 参数。

关于Python 请求抛出 SSLError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481545/

相关文章:

python - 如何将元组的 Python 生成器拆分为 2 个独立的生成器?

python - 导入错误 : cannot import name HTTPSHandler installing get-pip.

ruby-on-rails - 尽管 nginx 处理重定向,我是否应该启用 Rails force_ssl?

python - pyinstaller编译的文件有ssl问题,错误: 185090050

python - 使用 Beautiful Soup 和 Request 提取数据

Python:递归isinstance检查

python - 并排组合多个数据帧并重命名它们

ssl - curl 错误仅在 RHEL 7.1 上出现,但在 CentOS 或 Ubuntu 上没有

c# - ActiveMQ 网管系统 SSL : run application from remote machine

python-requests - HMS核心: HTTP Request to Map kit via Python script