首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python键太小了

Python键太小了
EN

Stack Overflow用户
提问于 2016-06-24 14:13:53
回答 12查看 52.1K关注 0票数 41

我正在使用Python和请求来抓取一些内部页面。我已经关闭了SSL验证和警告。

代码语言:javascript
运行
复制
requests.packages.urllib3.disable_warnings()
page = requests.get(url, verify=False)

在某些服务器上,我收到一个SSL错误,我无法通过。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "scraper.py", line 6, in <module>
    page = requests.get(url, verify=False)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 71, in get
    return request('get', url, params=params, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 57, in request
    return session.request(method=method, url=url, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/adapters.py", line 477, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: SSL_NEGATIVE_LENGTH] dh key too small (_ssl.c:600)

这在Cygwin、Windows和OSX中都会发生。我的研究暗示了服务器上过时的OpenSSL。我正在寻找一个理想的修复客户端。

编辑:我可以使用密码集来解决这个问题。

代码语言:javascript
运行
复制
import requests

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
try:
    requests.packages.urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST += 'HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass

page = requests.get(url, verify=False)
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-06-24 14:58:02

禁用警告或证书验证无助于此。底层问题是服务器使用的弱DH密钥,它可能在Logjam攻击中被滥用。

要解决这个问题,您需要选择一个不使用Diffie密钥交换的密码,因此不受弱DH密钥的影响。这个密码必须得到服务器的支持。服务器支持什么是未知的,但是您可以尝试使用密码AES128-SHA或密码集HIGH:!DH:!aNULL

使用您自己的密码集的请求是很棘手的。有关示例,请参见为什么Python请求忽略验证参数?

票数 20
EN

Stack Overflow用户

发布于 2016-12-08 13:45:31

这不是额外的答案,只要尝试将问题中的解决方案代码与额外的信息结合起来,其他人就可以直接复制它,而不需要额外的尝试。

它不仅是服务器端的DH关键问题,而且在python模块中有很多不同的库不匹配。

下面的代码段用于忽略这些安全问题,因为它可能无法在服务器端解决。例如,如果它是内部遗留服务器,则没有人希望更新它。

除了'HIGH:!DH:!aNULL'的黑字符串之外,还可以导入urllib3模块来禁用警告。

代码语言:javascript
运行
复制
import requests
import urllib3

requests.packages.urllib3.disable_warnings()
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'
try:
    requests.packages.urllib3.contrib.pyopenssl.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass

page = requests.get(url, verify=False)
票数 44
EN

Stack Overflow用户

发布于 2020-08-10 23:00:53

这也适用于我:

代码语言:javascript
运行
复制
import requests
import urllib3
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL:@SECLEVEL=1'

openssl文档:level.html

SECLEVEL=2现在是openssl的缺省值(至少在我的设置中是:Ubuntu20.04,OpenSS1.1.1f);SECLEVEL=1降低了这个值。

安全级别的目的是避免修改单个密码的复杂性。

我相信,我们大多数凡人并不深入了解个人密码的安全强弱,我当然不知道。安全级别似乎是控制你打开安全大门的程度的好方法。

注意:我得到了一个不同的SSL错误,WRONG_SIGNATURE_TYPE而不是SSL_NEGATIVE_LENGTH,但是底层问题是相同的。

错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  [...]
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 581, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='somehost.com', port=443): Max retries exceeded with url: myurl (Caused by SSLError(SSLError(1, '[SSL: WRONG_SIGNATURE_TYPE] wrong signature type (_ssl.c:1108)')))
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38015537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档