2013-06-13 2 views
24

У меня есть большое количество ссылок на скачивание файлов в файле txt. Я пытаюсь написать скрипт python, чтобы загрузить все файлы сразу, но я в конечном итоге со следующей ошибкой:Ошибка SSL: процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена

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

Файл загружается через интранет.

Я попытался загрузить файл через браузер, и у меня появилось всплывающее окно с some certificate. Я попытался это сделать, но не нашел способ решить эту проблему.

ответ

19

Сертификат сервера недействителен либо потому, что он подписан недействительным ЦС (внутренний ЦС, сам подписанный, ...), не соответствует имени сервера или по истечении срока его действия.

В любом случае вам нужно найти, как рассказать библиотеке Python, что вы используете, что она не должна останавливаться на недопустимом сертификате, если вы действительно хотите загрузить файлы с этого сервера.

+0

Я постараюсь сделать это !!! спасибо @Remi gacogne – Sangamesh

+0

Добро пожаловать. Если он решает вашу проблему, отметьте ответ как принятый. В любом случае, я желаю вам удачи. –

+0

Я попытался найти способ, основанный на том, что вы предложили, но dint найти найти что-нибудь, что может решить мою проблему. Если я попытаюсь загрузить файл с помощью chrome, его покажет один знак проверки сертификата. Do u думаю, что это может быть проблемой? спасибо – Sangamesh

14

Опытная это сам при использовании requests:

Это крайне небезопасно; используйте только в крайнем случае! (Смотрите комментарий rdlowrey в.)

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

Делать что verify=False сделал трюк для меня.

+42

Это очень субоптимальный ** подход. Простое отключение проверки сверстников чрезвычайно небезопасно и дает вам широкое распространение для атак типа «человек в центре». Это * не * «решение». – rdlowrey

+6

Конечно, но иногда у вас нет выбора. –

+0

У меня нет другого выбора, кроме этого решения. –

12

Получил эту проблему сегодня, и после того, как блуждал в течение нескольких часов, просто узнал, что мой сервер datetime был неправильным.

Итак, сначала проверьте ваш сервер datetime, прежде чем идти так глубоко в этой проблеме.

также попробовать сделать

>> sudo update-ca-certificates 
+2

Испытывал даты установки даты в будущем. Это ЗОЛОТО. –

+2

это действительно работает для меня, у меня была такая же проблема с parse SDK. –

0

я испытал те же проблемы из-за certifi библиотеки. Мне также помогла установка другой версии.

-4
#disable SERVER_CERTIFICATE verify with insecure 
wget url --insecure 
0

Обычно обновление certifi и/или файл certifi cacert.pem будет работать. Мне также пришлось обновить мою версию python. Против 2.7.5 не работал из-за того, как он обрабатывает запросы SNI.

После того, как у вас есть до даты PEM файл, который вы можете сделать запрос HTTP с помощью:

requests.get(url, verify='/path/to/cacert.pem')

0

также может произойти, когда местное время выключен (например, до того времени проверки сертификата), это было случай в моей ошибке ...

Смежные вопросы

 Смежные вопросы