2013-06-13 20 views
24

Mam dużą liczbę linków do pobierania plików w pliku txt. Próbuję napisać python skrypt do pobrania wszystkich plików na raz, ale kończy się z powodu następującego błędu:Błąd SSL: procedury: SSL3_GET_SERVER_CERTIFICATE: certyfikat nie powiódł się

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

Plik jest pobierany za pośrednictwem intranetu.

Próbowałem pobrać plik za pomocą przeglądarki i wyświetliło się okno z some certificate. Próbowałem google, ale nie znalazłem sposobu, aby rozwiązać ten problem.

Odpowiedz

19

Certyfikat serwera jest nieprawidłowy, ponieważ jest podpisany przez nieprawidłowy urząd certyfikacji (wewnętrzny urząd certyfikacji, samopodpisany, ...), nie jest zgodny z nazwą serwera lub z powodu wygasłego.

Tak czy inaczej, musisz znaleźć sposób, aby poinformować bibliotekę Pythona, że ​​używasz, że nie może zatrzymać się na nieważnym certyfikacie, jeśli naprawdę chcesz pobrać pliki z tego serwera.

+0

Spróbuję to zrobić !!! dzięki @Remi gacogne – Sangamesh

+0

Nie ma za co. Jeśli to rozwiąże problem, zaznacz odpowiedź jako zaakceptowaną. W każdym razie życzę ci powodzenia. –

+0

Próbowałem znaleźć sposób na podstawie tego, co sugerujesz, ale nie znalazłeś niczego, co mogłoby rozwiązać mój problem. Jeśli spróbuję pobrać plik przez chrome jego pokazuje pojedynczy znak na sprawdzanie poprawności certyfikatu pojawiają się .. Czy uważasz, że to może być problem? dzięki – Sangamesh

14

Doświadczony ten sam podczas korzystania requests:

To jest bardzo niebezpieczne; używać tylko w ostateczności! (patrz komentarz rdlowrey w.)

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

Making że verify=False wystarczyły dla mnie.

+42

Jest to podejście bardzo ** suboptymalne **. Po prostu wyłączenie weryfikacji wzajemnej jest wyjątkowo niepewne i pozostawia Cię otwartą na ataki typu Man-in-the-Middle. To nie jest "rozwiązanie". – rdlowrey

+6

Oczywiście, ale czasami nie masz wyboru. –

+0

Nie mam innego wyboru niż to rozwiązanie. –

12

Dostałem ten numer dzisiaj i po wędrówce przez kilka godzin dowiedziałem się, że moja datetime serwera była zła.

Najpierw sprawdź datę i czas serwera, zanim przejdziesz do tego problemu.

również spróbować zrobić

>> sudo update-ca-certificates 
+2

Czy testowanie daty ustawiania rzeczy w przyszłości. To jest ZŁOTO. –

+2

to naprawdę działa dla mnie, miałem ten sam problem z analizą SDK. –

0

jakie miałem ten sam problem z powodu certifi bibliotece. Zainstalowanie innej wersji również pomogło mi.

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

Normalnie aktualizowania Certyfi i/lub plik Certyfi cacert.pem będzie działać. Musiałem również zaktualizować moją wersję Pythona. Vs. 2.7.5 nie działa z powodu sposobu obsługi żądań SNI.

Gdy masz aktualną pliku data pem można dokonać żądania http przy użyciu:

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

0

może również zdarzyć, gdy czas lokalny jest wyłączony (np zanim czas sprawdzania poprawności certyfikatu), był to Przypadek w moim błędzie ...

Powiązane problemy