SSL错误:例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

时间:2013-06-13 10:33:17

标签: python file ssl

我在txt文件中有大量文件下载链接。我正在尝试编写一个python脚本来一次下载所有文件,但我最终得到以下错误:

SSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

该文件正在通过内联网下载。

我尝试通过浏览器下载文件,然后弹出some certificate。我试图谷歌它,但没有找到解决这个问题的方法。

7 个答案:

答案 0 :(得分:19)

服务器证书无效,原因是它由无效的CA(内部CA,自签名,...)签名,与服务器名称不匹配或因为它已过期。< / p>

无论哪种方式,你都需要找到如何告诉你正在使用的Python库,如果你真的想从这个服务器下载文件,它必须不能停在无效的证书上。

答案 1 :(得分:16)

使用 requests

时自己体验过这一点

这是非常不安全的;仅作为最后的手段使用! (参见rdlowrey的评论。)

requests.get('https://github.com', verify=True)

verify=False为我做了诀窍。

答案 2 :(得分:15)

今天遇到这个问题,经过几个小时的游荡后才知道我的服务器日期时间错了。

首先请检查您的服务器日期时间,然后再深入讨论此问题。

也尝试做

>> sudo update-ca-certificates

答案 3 :(得分:3)

最近在使用ubuntu 14.04LTS上的请求的python应用程序中遇到了同样的错误,我认为它一直运行良好(可能是它并且发生了一些更新)。执行以下步骤为我修复了它:

pip install --upgrade setuptools
pip install -U requests[security]

这是一个参考: https://stackoverflow.com/a/39580231/996117

答案 4 :(得分:1)

也可能在您的本地时间关闭时发生(例如在证书验证时间之前),我的错误就是这种情况......

答案 5 :(得分:0)

由于certifi库,我遇到了同样的问题。安装不同版本对我也有帮助。

答案 6 :(得分:0)

通常更新certifi和/或certifi function checkFormFunction(){ // get elements that are empty. var empty = $('.profile-user-personal-form input[type="text"], .profile-user-personal-form input[type="password"], .profile-user-personal-form select').map(function(index, el) { return !$(el).val() ? el : null; }).get(); //check if at least one radio is checked var isChecked = $('.profile-user-personal-form input[type="radio"]').is(":checked"); // could also be placed outside of the function var number = $('.user-leaving-info'); // check if there are any empty elements, a checked radio, if there are none, show numbers, else hide number. isChecked && !empty.length ? number.css({'opacity': 1, 'pointer-events':'auto'}) : number.css({ 'opacity': 0.2, 'pointer-events' : 'none', }); isChecked && !empty.length ? $('html , body').animate({ scrollTop: $(".user-leaving-info").offset().top }, 1000) : ""; } $('.profile-user-personal-form input[type="text"], .profile-user-personal-form input[type="password"]').bind('keyup', checkFormFunction); $('.profile-user-personal-form input[type="radio"], .profile-user-personal-form select').bind('change', checkFormFunction); 文件会起作用。我还必须更新我的python版本。比。 2.7.5因为它处理SNI请求的方式而无法正常工作。

获得最新的pem文件后,您可以使用以下方式发出http请求:

cacert.pem