fzlee/alipay

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>

Closed this issue · 3 comments

调用接口时,返回urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>错误。

import ssl
# This restores the same behavior as before.
context = ssl._create_unverified_context()
raw_string = urlopen(url, timeout=15, context=context).read().decode("utf-8")

加入context之后可以调用成功。

fzlee commented

遇到这种报错的原因是urllib请求服务器后, 服务器响应中的签名证书有问题。

作为一个支付类型的应用,安全需要稍微重视一点,找找证书出错的原因,而不是越过证书验证这一步。网上搜到的一堆教程都在建议跳过验证, 也是有点不负责任了。

我比较好奇你这边为啥会这样, 有可能你这边使用了类似goagent一类的自签名代理, 也有可能是企业内部使用了企业证书签名的透明代理, 再有可能就是中间人攻击了

是滴,您说的有道理。我查了一下原因,发现因为我的mac系统安装的python默认缺少签证文件,需要在应用程序文件夹里单独执行命令安装才可以。