如何在 Python 中获取要验证的 SSL 证书?

如何在 Python 中获取要验证的 SSL 证书?

我从 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  
                          )

相关内容