python调接口报错如下:
requests.exceptions.SSLError: HTTPSConnectionPool(host='abc.com', port=443)
Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1123)')))
简单分析了一下原因,最新版本的SSL默认不使用弱DH(DH:即Diffie-Hellman,密钥交换协议/算法),因此会报错。
这里的解决方案是通过设置默认值来降低ssl级别
在需要调度request的文件中引入用一下代码
import requests
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