pip menginstal gagal dengan "koneksi error: [SSL: CERTIFICATE_VERIFY_FAILED] sertifikat verifikasi gagal (_ssl.c:598)"

Saya sangat baru untuk Python dan mencoba untuk > pip menginstal linkchecker pada Windows 7. Beberapa catatan:

  • pip menginstal gagal tidak peduli paket. Misalnya, > pip menginstal scrapy juga mengakibatkan kesalahan SSL.
  • Vanili menginstal Python 3.4.1 termasuk pip 1.5.6. Hal pertama yang saya coba lakukan adalah menginstal linkchecker. Python 2.7 sudah diinstal, itu datang dengan ArcGIS. python dan pip tidak tersedia dari baris perintah sampai saya menginstal 3.4.1.
  • > pip pencarian linkchecker bekerja. Mungkin itu adalah karena pip pencarian tidak memverifikasi situs's sertifikat SSL.
  • Aku dalam jaringan perusahaan tapi kami tidak pergi melalui proxy untuk mencapai Internet.
  • Masing-masing komputer perusahaan (termasuk saya) telah Terpercaya Akar Otoritas Sertifikat yang digunakan untuk berbagai alasan, termasuk memungkinkan pemantauan TLS lalu lintas untuk https://google.com. Tidak yakin jika itu ada hubungannya dengan itu.

Berikut ini adalah isi dari saya pip.log setelah berjalan pip menginstal linkchecker:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
  Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
  Cannot fetch index base URL https://pypi.python.org/simple/
  URLs to search for versions for linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
  Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
Mengomentari pertanyaan (7)

Anda dapat mengabaikan kesalahan SSL dengan pengaturan pypi.org dan files.pythonhosted.org dipercaya sebagai tuan rumah.

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 

Catatan: kadang-Kadang selama April 2018, Python Paket Index bermigrasi dari pypi.python.org untuk pypi.org. Ini berarti "terpercaya-host" perintah menggunakan domain lama tidak lagi bekerja.

Perbaikan Permanen

Sejak rilis pip 10.0, anda harus mampu memperbaiki secara permanen hanya dengan meng-upgrade pip itu sendiri:

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

Atau dengan hanya menginstal ulang itu mendapatkan versi terbaru:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(... dan kemudian berjalan get-pip.py dengan relevan interpreter Python).

pip menginstal <otherpackage> hanya harus bekerja setelah ini. Jika tidak, maka anda akan perlu untuk melakukan lebih banyak, seperti yang dijelaskan di bawah ini.


Anda mungkin ingin add trusted host dan proxy untuk anda config.

pip.ini (Windows) atau pip.conf (unix)

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Alternatif Solusi (Kurang aman)

Sebagian besar jawaban yang bisa menimbulkan masalah keamanan.

Dua cara yang membantu dalam menginstal sebagian besar paket python dengan mudah akan sama:

  • Menggunakan easy_install: jika anda sedang benar-benar malas dan don't ingin membuang banyak waktu, gunakan easy_install <package_name>. Perhatikan bahwa beberapa paket won't dapat ditemukan atau akan memberikan kesalahan-kesalahan kecil.
  • Menggunakan Roda: download Kemudi paket python dan gunakan pip perintah pip menginstal wheel_package_name.whl untuk menginstal paket.
Komentar (40)

Anda dapat menentukan cert dengan param ini:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Lihat: Docs » Panduan Referensi » pip

Jika anda menentukan perusahaan's root cert doesn't bekerja mungkin cURL yang akan bekerja: http://curl.haxx.se/ca/cacert.pem

Anda harus menggunakan file PEM dan tidak CRT file. Jika anda memiliki CRT file anda akan perlu untuk mengkonversi file untuk PEM Ada laporan di komentar bahwa ini sekarang bekerja dengan CRT file tapi saya belum diverifikasi.

Lihat juga: SSL Cert Verifikasi.

Komentar (11)

kenorb jawaban ini sangat berguna (dan besar!).
di Antara nya solusi, mungkin ini adalah yang paling sederhana: --terpercaya-tuan rumah

Sebagai contoh, dalam kasus ini yang dapat anda lakukan

pip install --trusted-host pypi.python.org linkchecker

Pem file(atau apa pun) adalah tidak perlu.

Komentar (2)

Bagi saya masalah itu tetap dengan membuat folder pip, dengan file: pip.ini di C:\Users\<username>\AppData\Roaming\ e.g:

C:\Users\\AppData\Roaming\pip\pip.ini

Dalam hal ini saya menulis:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Saya restart python, dan kemudian pip secara permanen terpercaya situs tersebut, dan menggunakannya untuk men-download paket dari.

Jika anda dapat't menemukan Folder AppData pada windows, menulis %appdata% di file explorer dan itu harus muncul.

Komentar (4)

Jawaban yang sangat mirip dan sedikit membingungkan. Dalam kasus saya, sertifikat di perusahaan saya's jaringan adalah masalah. Saya mampu untuk bekerja di sekitar masalah menggunakan:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Seperti yang terlihat di sini. The-vvv argumen dapat dihilangkan jika verbose output tidak diperlukan

Komentar (2)

Cara yang paling mudah I've ditemukan, adalah untuk men-download dan gunakan "DigiCert Tinggi Jaminan EV Root CA" dari DigiCert di https://www.digicert.com/digicert-root-certificates.htm#roots

Anda dapat mengunjungi https://pypi.python.org/ untuk memverifikasi cert emiten dengan mengklik ikon kunci di address bar, atau meningkatkan geek cred dengan menggunakan openssl:

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

Terakhir CN nilai dalam rantai sertifikat adalah nama dari CA yang anda butuhkan untuk men-download.

Untuk satu kali usaha, lakukan hal berikut:

  1. Download CRT dari DigiCert
  2. Mengkonversi CRT untuk format PEM
  3. Ekspor PIP_CERT variabel lingkungan path dari file PEM

(baris terakhir mengasumsikan anda menggunakan bash shell) sebelum menjalankan pip.

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

Untuk membuat ini re-usable, menempatkan DigiCertHighAssuranceEVRootCA.crt di tempat umum dan ekspor PIP_CERT sesuai dalam file ~/.bashrc.

Komentar (1)

Perbaikan Permanen

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

Untuk misalnya:

pip install  --trusted-host pypi.org --trusted-host files.pythonhosted.org
Komentar (0)

Untuk memecahkan masalah ini sekali dan untuk semua, anda dapat memverifikasi bahwa anda memiliki pip.conf file.

Ini adalah di mana anda pip.conf seharusnya, menurut dokumentasi:

Pada Unix file konfigurasi default adalah: $HOME/.config/pip/pip.conf yang menghormati XDG_CONFIG_HOME variabel lingkungan.

Pada macOS file konfigurasi $HOME/Library/Application Support/pip/pip.conf jika direktori $HOME/Library/Application Support/pip ada yang lain $HOME/.config/pip/pip.conf

Pada Windows konfigurasi file %APPDATA%\pip\pip.ini.

Di dalam virtualenv:

Pada Unix dan macOS file $VIRTUAL_ENV/pip.conf

Pada Windows file: %VIRTUAL_ENV%\pip.ini

Anda pip.conf akan terlihat seperti:

[global]
trusted-host = pypi.python.org

pip menginstal linkchecker dipasang linkchecker tanpa mengeluh setelah aku menciptakan pip.conf file.

Komentar (5)

Anda've berikut kemungkinan-kemungkinan untuk memecahkan masalah dengan CERTIFICATE_VERIFY_FAILED:

  • Menggunakan HTTP, bukan HTTPS.
  • Gunakan --cert <terpercaya.pem> atau CA_BUNDLE variabel untuk menentukan alternatif CA bundel.

E. g. anda dapat pergi untuk gagal URL dari web-browser dan impor sertifikat root ke sistem anda.

  • Jalankan python -c "import ssl; print(ssl.get_default_verify_paths())" untuk memeriksa satu saat (validasi jika ada).
  • OpenSSL memiliki sepasang lingkungan (SSL_CERT_DIR, SSL_CERT_FILE) yang dapat digunakan untuk menentukan berbagai database sertifikatPEP-476.
  • Gunakan --terpercaya-tuan rumah <hostname> untuk menandai sebagai tuan rumah terpercaya.
  • Di Python menggunakan memverifikasi=False untuk permintaan.dapatkan (lihat: SSL Cert Verifikasi).
  • Gunakan --rapat umum <proxy> untuk menghindari pengecekan sertifikat.

Baca lebih lanjut di: TLS/SSL wrapper untuk socket benda - Memverifikasi sertifikat.

Komentar (0)

Mengatur Waktu dan Tanggal yang benar!

Bagi saya, itu datang bahwa saya tanggal dan waktu yang salah pada Raspberry Pi. Hasilnya adalah bahwa semua SSL dan HTTPS koneksi gagal, menggunakan https://files.pythonhosted.org/ server.

Update seperti ini:

bash sudo date-s "Wed Thu 23 11:12:00 GMT+1 2018" sudo dpkg-reconfigure tzdata

Atau langsung dengan misalnya Google's waktu:

Ref.: https://superuser.com/a/635024/935136

bash sudo date-s "$(curl -s --kepala http://google.com | grep ^Tanggal: | sed &#39;s/Tanggal: //g&#39;)" sudo dpkg-reconfigure tzdata

Komentar (1)

Aku baru saja berlari ke dalam masalah ini karena perusahaan saya's web content filter yang menggunakan Sertifikat Otoritas sehingga dapat menyaring lalu lintas SSL. PIP doesn't tampaknya akan menggunakan sistem's sertifikat CA dalam kasus saya, memproduksi kesalahan yang anda sebutkan. Merendahkan PIP ke versi 1.2.1 disajikan mengatur sendiri masalah di kemudian hari, jadi saya kembali ke versi asli yang datang dengan Python 3.4.

Solusi saya adalah cukup sederhana: menggunakan easy_install. Baik itu doesn't cek sertifikat (seperti PIP version), atau ia tahu untuk menggunakan sistem sertifikat karena itu bekerja setiap waktu untuk saya dan saya masih bisa menggunakan PIP untuk menghapus paket-paket yang diinstal dengan easy_install.

Jika itu doesn't bekerja dan anda bisa mendapatkan akses ke jaringan atau komputer yang doesn't memiliki masalah, anda selalu bisa setup pribadi anda sendiri PyPI server: https://stackoverflow.com/questions/18052217/how-to-create-local-own-pypi-repository-index-without-mirror

Saya hampir melakukan itu sampai aku mencoba menggunakan easy_install sebagai usaha terakhir.

Komentar (1)

Anda dapat mencoba untuk melewati SSL error dengan menggunakan http, bukan https. Tentu saja ini tidak optimal dalam hal keamanan, tapi jika anda terburu-buru harus melakukan trik:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Komentar (9)

Jawaban untuk menggunakan

pip install --trusted-host pypi.python.org 

bekerja. Tapi anda'll harus memeriksa apakah ada pengalihan atau cache pip memukul. Pada Windows 7 dengan pip 9.0.1, aku harus lari

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \

Anda dapat menemukan ini dengan verbose bendera.

Komentar (0)

Anda memiliki 4 pilihan:

Dengan menggunakan sertifikat sebagai parameter

$ pip install --cert /path/to/mycertificate.crt linkchecker

Dengan menggunakan sertifikat di pip.conf`

Membuat file ini:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

dan tambahkan baris ini:

[global]
cert = /path/to/mycertificate.crt

Mengabaikan sertifikat dan menggunakan HTTP

$ pip install --trusted-host pypi.python.org linkchecker

Mengabaikan sertifikat dan menggunakan HTTP di pip.conf

Membuat file ini:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

dan tambahkan baris ini:

[global]
trusted-host = pypi.python.org

Sumber

Komentar (0)

Saya telah menginstal pip 1.2.1 dengan easy_install dan upgrade ke versi terbaru dari pip (6.0.7 pada waktu itu) yang mampu menginstal paket-paket di kasus saya.

easy_install pip==1.2.1
pip install --upgrade pip
Komentar (0)

Pertama-tama,

    pip install --trusted-host pypi.python.org 

tidak bekerja untuk saya. Aku terus mendapatkan CERTIFICATE_VERIFY_FAILED kesalahan. Namun, saya melihat di pesan kesalahan yang mereka direferensikan 'pypi.org' situs. Jadi, saya menggunakan ini sebagai trusted nama host bukan pypi.python.org. Yang hampir saja aku di sana; beban masih gagal dengan CERTIFICATE_VERIFY_FAILED, tetapi pada suatu titik kemudian. Mencari referensi ke situs web yang gagal, saya termasuk itu dipercaya sebagai tuan rumah. Apa yang akhirnya bekerja untuk saya adalah:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 
Komentar (0)

Punya masalah yang sama mencoba pip menginstal ftputil dengan ActivePython 2.7.8, ActivePython 3.4.1, dan "saham" Python 3.4.2 pada 64-bit Windows 7 Enterprise. Semua upaya gagal dengan kesalahan yang sama seperti OP.

Bekerja di sekitar masalah untuk Python 3.4.2 oleh merendahkan untuk pip 1.2.1: easy_install pip==1.2.1 (lihat https://stackoverflow.com/a/16370731/234235). Sama memperbaiki juga bekerja untuk ActivePython 2.7.8.

Bug, dilaporkan pada bulan Maret 2013, masih terbuka: https://github.com/pypa/pip/issues/829.

Komentar (2)

I'm tidak yakin jika ini adalah yang terkait, tapi aku punya masalah yang sama yang tetap dengan menyalin file-file dari Anaconda3/Perpustakaan/bin untuk Anaconda3/Dll :

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Komentar (1)

Ada di halaman ini bekerja untuk saya sampai saya menggunakan --verbose untuk melihat bahwa ia ingin sampai ke files.pythonhosted.org daripada pypi.python.org:

pip install --trusted-host files.pythonhosted.org 

Jadi periksa URL yang's benar-benar gagal pada melalui --verbose pilihan.

Komentar (0)

Saya memecahkan masalah ini dengan menghapus pip saya dan menginstal versi yang lebih tua dari pip: https://pypi.python.org/pypi/pip/1.2.1

Komentar (5)