Windows下Python脚本遇SSL证书验证失败(无法获取本地颁发者证书)求解决
解决Windows下pyngrok调用set_auth_token时的SSL证书验证失败问题
问题场景
调用pyngrok的set_auth_token方法时,自动下载ngrok安装包触发SSL证书验证错误,核心报错如下:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)
重装pyngrok后问题仍未解决。
解决方案
方法1:临时禁用SSL验证(仅测试环境使用)
在代码开头添加全局SSL不验证设置,跳过证书检查:
import ssl # 全局禁用SSL证书验证 ssl._create_default_https_context = ssl._create_unverified_context from pyngrok import ngrok ngrok.set_auth_token("你的ngrok_token")
或者通过pyngrok配置单独禁用验证:
from pyngrok import conf, ngrok # 配置pyngrok不验证SSL pyngrok_config = conf.PyngrokConfig(ssl_verify=False) ngrok.set_auth_token("你的ngrok_token", pyngrok_config=pyngrok_config)
方法2:手动下载ngrok并指定路径
跳过自动下载流程,直接使用本地ngrok程序:
- 下载对应Windows版本的ngrok程序,解压得到
ngrok.exe - 在代码中指定ngrok的本地路径:
from pyngrok import conf, ngrok # 设置本地ngrok的实际路径 conf.get_default().ngrok_path = "C:/你的路径/ngrok.exe" ngrok.set_auth_token("你的ngrok_token")
方法3:修复Python的SSL证书(永久解决,推荐)
更新Python的CA证书库,使其信任目标服务器证书:
- 获取可信的根CA证书(可从系统证书管理器导出或使用标准CA证书包)
- 找到Python安装目录下的
Lib\site-packages\certifi\cacert.pem文件 - 将根证书内容追加到
cacert.pem文件末尾并保存 - 或者设置系统环境变量:
- 打开「系统属性→高级→环境变量」,添加系统变量
SSL_CERT_FILE,值为根证书文件的绝对路径 - 重启Python环境后生效
- 打开「系统属性→高级→环境变量」,添加系统变量
内容的提问来源于stack exchange,提问作者Joff
相关产品推荐
相关产品推荐

