使用Python请求信任自签名证书

时间:2014-08-06 01:52:33

标签: python apache ssl python-requests

我的apache ssl conf有以下配置

#   Server Certificate:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

#   Server Private Key:
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

我没有此服务器的CA证书。我是否仍然可以将localhost.crt安装到我的客户端以成功验证我的服务器?

在客户端: 我正在使用Python请求库(2.2.1)。使用默认的CA BUNDLE路径。即使我将localhost.crt添加到默认路径中的cacert.pem,我也无法看到验证通过。我看到例外:

    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
    raise SSLError(e)
SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我做错了吗?我应该只添加在服务器上签署localhost.crt的CA吗?

谢谢, 维杰

1 个答案:

答案 0 :(得分:1)

如果您提供了代码并且更清楚自己所做的事情,那么您就会得到一个好的答案。

如果您希望即使使用无效证书也不想收到错误,请尝试使用for属性。

verify=False

如果要使用自定义证书,请将证书放在脚本文件夹中并使用>>> requests.get('https://kennethreitz.com', verify=False)参数。

cert=('/path/client.cert', '/path/client.key')

有关详情,请参阅docs.python-requests.org/en/master/user/advanced/网站