我从 EssentialSSL(Comodo 是 CA)获得了一个廉价的证书,但我惊讶地发现 Python 无法识别它。
requests.exceptions.SSLError: [Errno 1] _ssl.c:509: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
该证书似乎已被所有主流浏览器正确识别,但 Python 仍然无法验证它。
如果可能的话,我更喜欢简单的安装解决方案,例如安装包或脚本。
我有点惊讶没有在默认的可识别 CA 证书列表中看到 Comodo,所有主流(5)浏览器都接受它,但不接受 Ubuntu wget/python/...(我猜是 openssl 的原因)。
答案1
使用 Debian 软件包ca 证书它将包含(除其他外)Mozilla Firefox/Thunderbird/等使用的所有 CA 证书。
您可以在 Python 中使用证书文件(所有证书都在一个文件中,PEM 格式),如下所示:
ssl_sock = ssl.wrap_socket(sock,
ca_certs="/etc/ssl/certs/ca-certificates.crt",
cert_reqs=ssl.CERT_REQUIRED
)