SSL:证书验证失败在python3上的macOS 10.15版本

2024-09-30 10:40:03 发布

您现在位置:Python中文网/ 问答频道 /正文

来自macOS 10.15上的Xcode/CLT的/usr/bin/python3(目前是DB6/PB5,使用Xcode 11 beta 6)对于所有来自PSL的HTTPS请求(例如来自urllib.request)失败,并出现{}:

$ /usr/bin/python3 -c 'import urllib.request; urllib.request.urlopen("https://www.apple.com/")'
...
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>

如何解决这个问题?在

(我知道答案,很快就会贴出来;只是分享一下,以防别人碰到。)


Tags: binrequestusrmacoserrorcertificateurllibpython3
3条回答

问题是/usr/bin/python3(来自Xcode或CLT)无法正确定位/etc/ssl中的信任存储,正如我们可以看到的使用ssl.get_default_verify_paths()

$ /usr/bin/python3 -c 'import ssl; print(ssl.get_default_verify_paths())'
DefaultVerifyPaths(cafile=None, capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl/certs')

它正在调查不存在的/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl。在

知道了这一点,我们可以使用以下方法:

^{pr2}$

我已经向苹果提交了一份错误报告(顺便说一句,刚刚意识到bugreport.apple.com现在不见了,我不得不使用反馈助手网站)。打开雷达https://openradar.appspot.com/7111585(不幸的是,雷达号码是错误的-因为bugreport.apple.com不见了,我没有雷达号了,只有一个反馈号FB7111585)。在

作为对@4ae1e1答案的补充,您可以创建一个指向SSL文件夹的符号链接,而不是同步它。这将使/etc/ssl中的任何更改保持在/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl/的最新状态。在

/usr/bin/sudo /bin/mkdir /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc
/usr/bin/sudo /bin/ln -s /etc/ssl/ /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/

应该这么做。在

python3.6 -c 'import requests; requests.get("https://www.apple.com/")'

试试这个。 看看这对你是否有用。在

相关问题 更多 >

    热门问题