2016-01-05 11 views
8

Ho una rete davvero pessima che usa un certificato MITM per curiosare sulle convos di tutti. Ciò significa che ho bisogno di spegnerlo, ad esempio, nel nodo I uso export NODE_TLS_REJECT_UNAUTHORIZED="0".Posso disattivare la convalida del cert SSL Python (PiP) con una variabile ENV?

C'è un modo simile per farlo in Python per risolvere questo problema?


Pretend I security deficient (che io sono). Nel mio esempio per il nodo, ho semplicemente configurato una variabile ambientale e fatto. Questo mi ha fatto utilizzando un file PEM (che non ho idea di dove andare). Ho provato a scaricare la catena di certificati, ma non ho potuto ottenere un file PEM. Non c'è davvero un modo più semplice per raggiungere questo obiettivo? Onestamente, il modo in cui viene configurata la rete non penso di poter nemmeno importare un solo certificato.


Ho provato ad utilizzare questo ...

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/ 

Ancora confermando che non si tratta di una falsa pista grazie al nostro proxy.


Inoltre ho provato ad aggiungere HTTP_PROXY e HTTPS_PROXY anziché l'opzione riga di comando. Ancora ottenere il seguente risultato ...

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) 

Inoltre potrebbe essere importante ...

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

Una varietà di opzioni per bypassare la verifica SSL o aggirare questo problema sono in [le risposte a questa domanda] (http://stackoverflow.com/questions/25981703/pip-install-fails-with-connection-error- ssl-certificate-verify-failed-certi). – birryree

+0

Pretend I security deficient (che io sono). Nel mio esempio per il nodo, ho semplicemente configurato una variabile ambientale e fatto. Questo mi ha fatto utilizzando un file PEM (che non ho idea di dove andare). Ho provato a scaricare la catena di certificati, ma non ho potuto ottenere un file PEM. Non c'è davvero un modo più semplice per raggiungere questo obiettivo? Onestamente il modo in cui è impostata la rete non credo di poter importare nemmeno un solo certificato. – Jackie

+0

Hai bisogno di passare attraverso il proxy? '--proxy' potrebbe non funzionare per te, quindi devi impostare le variabili di ambiente' http_proxy' e 'https_proxy' come' export http_proxy = http: //proxy.me.com: 80' e 'export https_proxy = http: //proxy.me.com: 80' ed esegui di nuovo 'pip'. – birryree

risposta

-4

Quando ho bisogno di ignorare le catene di convalida del certificato che ho usato il seguente codice:

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 

Il codice precedente dirà all'istanza SSL nel tuo python di ignorare gli errori non verificati. È inoltre possibile modificare direttamente il file SSL.py per modificare il comportamento.

Si consiglia di prendere anche uno sguardo a: https://docs.python.org/3/library/ssl.html#ssl.SSLContext

+2

Sei serio dove diamine dovrei anche metterlo, questo è molto più complesso di quello che sto cercando uomo dispiaciuto. Da qui il requisito della variabile ambientale – Jackie

4

Ho lo stesso problema esattamente sulla mia rete. L'ho fatto per installare il cuscino:

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

... e ha funzionato benissimo per me. Spero che sia d'aiuto.

+0

usando '--index-url = https: //pypi.python.org/simple/'ha funzionato per me. Sto lavorando su un server proxy aziendale. – KronoS

Problemi correlati