问题是/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
,它不存在。
知道了这一点,我们可以使用以下 hack:
$ sudo rsync -avzP /etc/ssl/ /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl/
我已经向 Apple 提交了错误报告(顺便说一句,我刚刚意识到 bugreport.apple.com 现在已经消失了,我不得不使用反馈助手网站)。打开雷达https://openradar.appspot.com/7111585(不幸的是,那个雷达号是错误的——因为 bugreport.apple.com 已经消失了,我不再有雷达号,只有一个反馈号FB7111585
)。