2016-01-05 7 views
8

Mam naprawdę kiepską sieć, która używa certyfikatu MITM do szpiegowania wszystkich konwojów. Oznacza to, że muszę go wyłączyć, na przykład w węźle używam export NODE_TLS_REJECT_UNAUTHORIZED="0".Czy mogę wyłączyć sprawdzanie certyfikatu Python (PiP) SSL ze zmienną ENV?

Czy istnieje podobny sposób na zrobienie tego w Pythonie, aby obejść ten problem?


Udawaj, że jestem niedoborem bezpieczeństwa (którym jestem). W moim przykładzie dla węzła wystarczy skonfigurować zmienną środowiskową i zrobić. To mnie używa pliku pem (którego nie mam pojęcia skąd wziąć). Próbowałem pobrać łańcuch certyfikatów, ale nie udało mi się pobrać go do pliku pem. Czy naprawdę nie ma prostszego sposobu, aby to osiągnąć? Szczerze mówiąc, konfiguracja sieci Nie sądzę, żebym mógł zaimportować tylko jeden certyfikat.


Próbowałem za pomocą tego ...

pip3 install itsdangerous --proxy=http://proxy.me.com:80 --index-url=http://pypi.python.org/simple/ 

Getting page http://pypi.python.org/simple/ 
Could not fetch URL http://pypi.python.org/simple/: timed out 
Will skip URL http://pypi.python.org/simple/ when looking for download links for itsdangerous 
Cannot fetch index base URL http://pypi.python.org/simple/ 

Wciąż potwierdzając, że to nie jest czerwony śledź dzięki naszej pełnomocnika.


Również próbowałem dodając HTTP_PROXY i HTTPS_PROXY zamiast opcji wiersza poleceń. Wciąż otrzymuję następujący wynik ...

pip3 install itsdangerous --index-url=http://pypi.python.org/simple/ 
    ... 
    Downloading/unpacking itsdangerous 
    Getting page http://pypi.python.org/simple/itsdangerous/ 
    Could not fetch URL http://pypi.python.org/simple/itsdangerous/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) 
    Will skip URL http://pypi.python.org/simple/itsdangerous/ when looking for download links for itsdangerous 
    Getting page http://pypi.python.org/simple/ 
    Could not fetch URL http://pypi.python.org/simple/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) 

także może mieć znaczenie ...

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4) 
+2

Różne opcje obejścia weryfikacji SSL lub obejścia tego znajdują się w [odpowiedzi na to pytanie] (http://stackoverflow.com/questions/25981703/pip-install-fails-with-connection-error- ssl-certificate-verify-failed-certi). – birryree

+0

Udawaj, że jestem niedoborem bezpieczeństwa (którym jestem). W moim przykładzie dla węzła wystarczy skonfigurować zmienną środowiskową i zrobić. To mnie używa pliku pem (którego nie mam pojęcia skąd wziąć). Próbowałem pobrać łańcuch certyfikatów, ale nie udało mi się pobrać go do pliku pem. Czy naprawdę nie ma prostszego sposobu, aby to osiągnąć? Szczerze mówiąc, konfiguracja sieci Nie sądzę, żebym mógł zaimportować tylko jeden certyfikat. – Jackie

+0

Czy potrzebujesz przejść przez proxy? '-proxy' może nie działać dla ciebie, więc musisz ustawić zmienne środowiskowe' http_proxy' i 'https_proxy' jak' export http_proxy = http: //proxy.me.com: 80' i 'export https_proxy = http: //proxy.me.com: 80' i ponownie uruchom 'pip'. – birryree

Odpowiedz

-4

Kiedy muszę ignorować łańcuchy sprawdzania poprawności certyfikatu Użyłem następujący kod:

import ssl 

     try: 
      _create_verified_https_context = ssl._create_default_https_context 
      _create_unverified_https_context = ssl._create_unverified_context 
     except AttributeError: 
      pass 
     else: 
      # Handle target environment that doesn't support HTTPS verification. Save 
      # a reference to the previous method so it is still available if needed. 
      ssl._create_default_https_context = _create_unverified_https_context 
      if not hasattr(ssl, '_create_verified_https_context'): 
       ssl._create_verified_https_context = _create_verified_https_context 

Powyższy kod pokaże twoją instancję SSL w twoim pythonie, aby zignorować niezweryfikowane błędy. Możesz także zmodyfikować swój plik SSL.py bezpośrednio, aby zmienić zachowanie.

Możesz również przyjrzeć: https://docs.python.org/3/library/ssl.html#ssl.SSLContext

+2

Czy jesteś poważny, gdzie do cholery mam nawet to ująć, jest to o wiele bardziej skomplikowane niż to, czego szukam. Stąd wymóg zmiennej środowiskowej – Jackie

4

Mam dokładnie ten sam problem w mojej sieci. Zrobiłem to, aby zainstalować poduszkę:

pip install Pillow --trusted-host pypi.python.org --index-url=http://pypi.python.org/simple/ 

... i zadziałało dla mnie świetnie. Mam nadzieję, że to pomoże.

+0

za pomocą '--index-url = https: //pypi.python.org/simple/'pracował dla mnie. Pracuję na korporacyjnym serwerze proxy. – KronoS

Powiązane problemy