İstekler paketi kullanılırken SSL InsecurePlatform hatası


237

Python 2.7.3 ve istekleri kullanıyorum. İstekleri pip yoluyla yükledim. En son sürüm olduğuna inanıyorum. Debian Wheezy üzerinde koşuyorum.

Geçmişte birçok kez İstekler kullandım ve bu sorunla hiç karşılaşmadım, ancak https istekleri yaparken Requestsbir InsecurePlatformistisna alıyorum .

Hatadan bahsediyor urllib3, ama yüklü değil. Hatayı çözüp çözmediğini kontrol etmek için yükledim, ancak olmadı.

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and 
may cause certain SSL connections to fail. For more information, see 
https://urllib3.readthedocs.org/en/latest  
/security.html#insecureplatformwarning.

Bunu neden aldığım konusunda bir fikrin var mı? Hata mesajında ​​belirtildiği gibi dokümanları kontrol ettim, ancak dokümanlar urllib3'ü içe aktarmayı ve uyarıyı devre dışı bırakmayı veya bir sertifika sağlamayı söylüyor.

Yanıtlar:


390

Biraz gizli güvenlik özelliğini kullanın :

pip install requests[security] veya pip install pyOpenSSL ndg-httpsclient pyasn1

Her iki komut da aşağıdaki ekstra paketleri yükler:

  • pyOpenSSL
  • kriptografi
  • IDNA

Bunun python-2.7.9 + için gerekli olmadığını lütfen unutmayın .

Eğer pip installhataları ile başarısız sizin için geliştirme paketlerini gerekli olup olmadığını kontrol libffi, libsslve pythonsisteminizde yüklü dağıtımın paket yöneticisini kullanarak :

  • Debian / Ubuntu - python-dev libffi-dev libssl-devpaketler.

  • Fedora - openssl-devel python-devel libffi-develpaketler.

Yukarıdaki dağıtım listesi eksik.

Geçici çözüm ( @TomDotTom'un orijinal yanıtına bakın ) :

Gerekli geliştirme paketlerinden bazılarını yükleyemiyorsanız, bu uyarıyı devre dışı bırakma seçeneği de vardır:

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

Eğer kendiniz pipPyPI'den etkileniyorsa InsecurePlatformWarningve hiçbir şey yükleyemiyorsa, bu adım adım kılavuzla ek python paketlerini manuel olarak dağıtmak için düzeltilebilir .


3
[Güvenlik], yeni terminal, Python 2.7.3 ve hala bu hatayı alıyorum
Josh Nankin

45
Ayrıca Ubuntu / Debian için sisteme ek kütüphaneler yüklemeniz gerekir:sudo apt-get install python-dev libffi-dev libssl-dev
therealmarv

2
"Pip" in kendisi (v6.1'den bakıldığında) aynı güvenlik uyarısını veriyor mu?
jmster

5
kabuğunuza bağlı olarak aşağıdakileri yazmanız gerekebilirpip install 'requests[security]'
C. Reed

5
zshell'de şunu söylemelisiniz: pip yükleme istekleri \ [güvenlik \]
Amir Katz

68

2.6 talepleri, 2.7.9'dan önceki python kullanıcıları için yalnızca stok SSL modülleriyle bu uyarıyı getirdi.

Python'un daha yeni bir sürümüne yükseltemediğinizi varsayarsak, bu daha güncel python SSL kitaplıkları yükler:

pip install --upgrade ndg-httpsclient 

Ancak, bu, pyOpenSSL için yapı bağımlılıkları olmayan bazı sistemlerde başarısız olabilir. Debian sistemlerde, yukarıdaki pip komutundan önce bunu çalıştırmak, pyOpenSSL'nin oluşturulması için yeterli olmalıdır:

apt-get install python-dev libffi-dev libssl-dev

4
Ubuntu 14.04 için de bu paketleri 'python-dev libffi-dev libssl-dev' yüklemem gerekiyordu.
Andy

Teşekkürler! Belgelere bir not ekledim: github.com/shazow/urllib3/pull/765
Wolfgang

@Jessica FTW! Çok teşekkürler - bu can sıkıcı oldu.
Neal Magee

18

Bunu üretimde kullanmıyorum, sadece bazı test koşucuları. Ve urllib3 belgelerini tekrarlamak için

Ne yaptığınızı biliyorsanız ve bunu ve diğer uyarıları devre dışı bırakmak istiyorsanız

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

Düzenle / Güncelle:

Aşağıdakiler de çalışmalıdır:

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)

1
Bu çözümün sorunu, asıl sorunu basitçe bastırması ve görmezden gelmesidir. Ayrıca, paketleri yüklemek veya yükseltmek için pip kullanırken bu çalışmaz.
Jason Parham

1
Ubuntu 1404 / Python 2.7.6'da benim için çalışan tek çözüm. Teşekkürler
Ignacio Vazquez

7

Eğer varsa yükseltmek mümkün değildir 2.7.9 için Python sürümü ve bastırmak uyarılara istiyorum

yapabilecekleriniz sizin 'istekleri' downgrade 2.5.3 için sürüm:

sudo pip install requests==2.5.3

Sürüm hakkında: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html


8
2.5.3'ün yönlendirmeler sırasında çerez işleme ile ilgili güvenlik sorunu olduğunu lütfen unutmayın.
plaes

2
Bu yanıtı iki kez göndermek yerine, diğer yayını yinelenen olarak işaretlemiş olmanız gerekir. Şimdi böyle kapattım.
Martijn Pieters

6
Bilinen güvenlik açığı nedeniyle yorumu eski sürüme geçirmemek için ikinci sıradayım .
sergiopereira

7

Aslında bunu deneyebilirsiniz.

requests.post("https://www.google.com", verify=False)

isteklerin kodunu okuyabilirsiniz.

"C:\Python27\Lib\site-packages\requests\sessions.py"

class Session(SessionRedirectMixin):
......
 def request(self, method, url,
    params=None,
    data=None,
    headers=None,
    cookies=None,
    files=None,
    auth=None,
    timeout=None,
    allow_redirects=True,
    proxies=None,
    hooks=None,
    stream=None,
    verify=None,  # <========
    cert=None):
    """
    ...
    :param verify: (optional) if True, the SSL cert will be verified.
         A CA_BUNDLE path can also be provided.
    ...
    """

2
Bunu yaparken çok dikkatli olun , certs doğrulamanın tehlikeli olabileceğini doğrulamayın!
jaapz

Tabii ki, certs doğrulamamak tehlikeli olacaktır. Ama bazen, bu son çare. Örn: easy_install, apt-get, yum veya pip ... çalışmadı, Ya da biraz Web Crawler yap ...
zzzz zzzz

1
Paylaşılan bir barındırma ortamındayım, bu yüzden python'u 2.7.9'a yükseltemiyorum ve libffi.pc'yi pip yükleme istekleri [güvenlik] ve diğer pip yükleme varyantları için gerekli olan apt-get ile yükleyemiyorum yukarıda. Bu cevap benim için çalışan cevaptı. Https doğrulaması olmadan sayfa içeriğinin değiştirilebileceği / taklit edilebileceği önemli uyarıyı anladığınız sürece, bu cevabın iyi olduğunu düşünüyorum.
Chirael

5

Burada verilen tüm çözümler işe yaramadı (python 2.6.6 ile sınırlıyım). Cevabı pip'e geçmek için basit bir geçişte buldum:

$ sudo pip install --trusted-host pypi.python.org <module_name>

Pip'e, modülü pypi.python.org'dan almanın uygun olduğunu söyler.

Benim için sorun, şirketimin güvenlik duvarının arkasındaki proxy'si, bu da bazı sunuculara kötü amaçlı bir istemci gibi görünmesini sağlıyor. Yaşasın güvenlik.


Güncelleme: PyPi alanlarındaki değişiklikler ve eklenebilecek ek seçenekler için @Alex'in cevabına bakın --trusted-host. (Buraya kopyalayacağım / yapıştıracağım, ancak cevabı, + 1'leyin)


Sonunda bu komutu kullanarak tensorflow'u yükleyebilirim, çok teşekkürler!
pedrobisp

3

Bu cevap ilgisizdir, ancak uyarıdan kurtulmak ve isteklerden aşağıdaki uyarıyı almak istiyorsanız:

InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Sen olabilir devre dışı senin piton koduna aşağıdaki satırın ekleyerek:

requests.packages.urllib3.disable_warnings()


Bunun için teşekkürler. Diğer cevapların hiçbiri benim için işe yaramadı. Bu tür ayrıntılı bir can sıkıcı mesajın varsayılan olarak konacağını fark ettim.
Dan

1

bashÖnce (ZSH'den) gitmek zorunda kaldım . Sonra

sudo -H pip install 'requests[security]' --upgrade

sorunu çözdü.


Emin değilim. Sanırım parantez yüzünden
Martin Thoma

1

İ did sonra bu geçen hafta (Python 2.7.6 ile birlikte) Ubuntu 14.04 benim için geldi apt-get dist-upgradedahil libssl1.1:amd64dandeb.sury.org .

Ben çalıştırmak beri certbot-auto renewbir cron işinden, ben de kullanmak --no-self-upgradeprogramsız bakım azaltmak için. Bu sorunun kaynağı gibi görünüyor.

Hatayı düzeltmek için yapmak için gerekli tüm I (root haline edildi su'ın --loginanahtarı) ve izin certbot-autokendini yükseltin. yani:

sudo su --login
/usr/local/bin/certbot-auto renew 
# ... Upgrading certbot-auto 0.8.1 to 0.18.2... blah blah blah ...

Kökün crontab'ından normalde çalışanlar yerine:

5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

Bundan sonra, letsencrypt yenilemeleri bir kez daha normal olarak çalıştı.


Burada açıklanan sorunu da aldım. uyarılar: /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: Gerçek bir SSLContext nesnesi mevcut değil. Bu, urllib3'ün SSL'yi uygun şekilde yapılandırmasını önler ve belirli SSL bağlantılarının başarısız olmasına neden olabilir. Bunu çözmek için Python'un daha yeni bir sürümüne yükseltebilirsiniz. Daha fazla bilgi için, bkz. Urllib3.readthedocs.io/en/latest/… . InsecurePlatformWarning Sadece şu komutu yazıyorum: sudo apt-get dist-upgrade Hata düzeltildi.
Didierh

0

Benim için hiçbir iş i yükseltme pip ....

Debian / Ubuntu

yükleme bağımlılıkları

sudo apt-get install libpython-dev libssl-dev libffi-dev

pip yükseltme ve paketleri yükleme

sudo pip install -U pip
sudo pip install -U pyopenssl ndg-httpsclient pyasn1

Bağımlılıkları kaldırmak istiyorsanız

sudo apt-get remove --purge libpython-dev libssl-dev libffi-dev
sudo apt-get autoremove

0

Python2.7'nin çok eski bir sürümünün üstüne / usr / local üzerine python 2.7.12'yi yüklediğim CentOS 5 sunucusunda benzer bir sorun yaşadım. CentOS 6 veya 7'ye yükseltme şu anda bu sunucuda bir seçenek değil.

Python 2.7 modüllerinden bazıları hala python'un eski sürümünden mevcuttu, ancak daha yeni şifreleme paketi CentOS 5 paketleri tarafından desteklenmediği için pip yükseltilemiyordu.

Özellikle, 'pip yükleme istekleri [güvenlik]' başarısız oldu çünkü CentOS 5'teki openssl sürümü 0.9.8e idi, bu da artık şifreleme> 1.4.0 tarafından desteklenmiyor.

OP orijinal sorunu çözmek için yaptım:

1) pip install 'cryptography<1.3.5,>1.3.0'.  

Bu, openssl-0.9.8e ile çalışan kriptografi 1.3.4'ü yükledi. cryptograpy 1.3.4 aşağıdaki komutun gerekliliğini karşılamak için de yeterlidir.

2) pip install 'requests[security]'

Bu komut şimdi kriptografi> 1.4.0 yüklemeye çalışmadığı için yüklenir.

Centos 5'te de şunları yapmam gerektiğini unutmayın:

yum install openssl-devel

Kriptografinin oluşturulmasına izin vermek için


0

Python 3.6'da benim için nasıl çalışıyor:

import requests
import urllib3

# Suppress InsecureRequestWarning: Unverified HTTPS
urllib3.disable_warnings()

0

Yakında kullanımdan kaldırılacağı için pyOpenSSL'yi kurmayın. Mevcut en iyi yaklaşım

import requests
requests.packages.urllib3.disable_warnings()

0

sadece aşağıdaki gibi güvensiz uyarıları durdurmak istiyorsanız:

/usr/lib/python3/dist-packages/urllib3/connectionpool.py:794: InsecureRequestWarning: Doğrulanmamış HTTPS isteği yapılıyor. Sertifika doğrulaması eklemeniz önemle tavsiye edilir. Bkz. Https://urllib3.readthedocs.org/en/latest/security.html GüvensizRequestUyarı)

yapmak:

requests.METHOD("https://www.google.com", verify=False)

doğrulamak = False

anahtar, aşağıdakiler iyi değil:

requests.packages.urllib3.disable_warnings ()

veya

urllib3.disable_warnings ()

ancak bunun potansiyel güvenlik risklerine neden olabileceğini bilmelisiniz .


0


Mac
Pycharm topluluk baskısı 2019 ile aynı sorun yaşadım.3
Python yorumlayıcı 3.6.
Pip'i 20.0.2 ile yükseltmek benim için çalıştı.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.