本文编写于 579 天前,最后修改于 579 天前,其中某些信息可能已经过时。

MacOS Python3.7 出现SSL: CERTIFICATE_VERIFY_FAILED报错解决方案

今天在 Python3 中试用 Tencent Cloud Api 的时候出现了这样一种情况

执行的时候出现了SSL: CERTIFICATE_VERIFY_FAILED情况

[TencentCloudSDKException] code:ClientNetworkError message:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1056) requestId:None

还以为是传入的参数有问题,然而看了官方仓库后才发现这个是普遍问题

找到了官方的说法:

证书问题

在 Mac 操作系统安装 Python 3.6 或以上版本时,可能会遇到证书错误:Error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1056).。这是因为在 Mac 操作系统下,Python 不再使用系统默认的证书,且本身也不提供证书。在进行 HTTPS 请求时,需要使用 certifi 库提供的证书,但 SDK 不支持指定,所以只能使用 /Applications/Python 3.6/Install Certificates.command 命令安装证书才能解决此问题。

解决方案

这样就很容易解决了

/Applications/Python 3.6/目录里面,执行文件即可

我这里是 Python3.7 所以得更改地址为3.7 那么在Terminal中,执行

/Applications/Python\ 3.7/Install\ Certificates.command

然后安装成功即可使用api

 XXX@XXX  /Applications/Python 3.7 -> /Applications/Python\ 3.7/Install\ Certificates.command
 -- pip install --upgrade certifi
Collecting certifi
  Using cached https://files.pythonhosted.org/packages/18/b0/8146a4f8dd402f60744fa380bc73ca47303cccf8b9190fd16a827281eac2/certifi-2019.9.11-py2.py3-none-any.whl
Installing collected packages: certifi
Successfully installed certifi-2019.9.11
WARNING: You are using pip version 19.1.1, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
 -- removing any existing file or link
 -- creating symlink to certifi certificate bundle
 -- setting permissions
 -- update complete

可以看见调用成功