Mac下Python3.6+遇SSL证书验证失败,如何捕获错误并给出提示?
处理Mac上Python 3.6+的SSL证书验证失败错误
我之前在Mac上用Python 3.6+的时候也踩过这个SSL证书的坑,刚好能给你分享怎么在代码里优雅处理这个问题,给用户友好的提示!
问题背景
在Mac系统的Python 3.6及以上版本中,如果你还没运行过证书安装命令,几乎所有SSL相关操作(比如用requests发起HTTPS请求、urllib访问加密站点)都会失败,抛出SSL: CERTIFICATE_VERIFY_FAILED错误。这是因为Python 3.6+在Mac上默认没有预装系统根证书,必须手动触发安装才能让SSL验证正常工作。
代码实现:捕获错误并给出指引
你可以在代码里精准捕获这个特定的SSL错误,然后直接告诉用户怎么解决,不用让他们自己去搜半天。下面是示例代码:
import ssl import requests try: # 这里是你的SSL相关业务代码,比如发起HTTPS请求 response = requests.get("https://example.com") response.raise_for_status() print("请求成功!") except ssl.SSLCertVerificationError as e: if "CERTIFICATE_VERIFY_FAILED" in str(e): print("⚠️ 检测到SSL证书验证失败错误!") print("请按以下步骤解决:") print("1. 打开终端应用") print("2. 运行命令:`/Applications/Python\\ 3.6/Install\\ Certificates.command`") print(" (注意:把命令里的`3.6`换成你实际使用的Python版本号,比如Python 3.9就改成`Python\\ 3.9`)") print("3. 重新运行你的Python脚本") else: # 如果是其他类型的SSL错误,正常抛出让用户排查 raise e except Exception as e: # 处理其他非SSL相关的异常 print(f"发生其他错误:{str(e)}")
额外说明
- 运行那个终端命令后,Python会自动安装所需的根证书,之后所有SSL验证操作都会恢复正常
- 如果你是通过Homebrew等渠道安装的Python,路径可能会不一样,但官方DMG安装的Python都能用上面的路径格式找到证书安装脚本
内容的提问来源于stack exchange,提问作者Mark Amery
相关产品推荐
相关产品推荐

