Python SSLError atmayı istiyor


350

CAS, jspring güvenlik kontrolü, yönlendirme vb. İçeren basit bir betik üzerinde çalışıyorum. Çok iyi bir iş olduğu için Kenneth Reitz'in python isteklerini kullanmak istiyorum! Ancak, ilk önce bu adımı atlatmam gerekiyor, çünkü SSL SSL ile doğrulanması gerekir. Python'un ne istediğini bilmiyorum? Bu SSL sertifikasının nerede bulunması gerekiyor?

Traceback (most recent call last):
  File "./test.py", line 24, in <module>
  response = requests.get(url1, headers=headers)
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
  File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 209, in request 
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 624, in send
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 300, in _build_response
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 611, in send
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Daha fazla kod bilgisini paylaşabilir misiniz? Eksik bir adım var gibi görünüyor.
TankorSmash

5
Her zaman yardıma ihtiyacınız olan yazılım sürümlerinden bahsetmelisiniz.
Piotr Dobrogost

Python 3.5 kasırga 4.4 kullandığım bu sorun var. HTTPRequest validate_cert = True ayarladı, böylece başa çıkmak için False ayarlayabilirsiniz
pan7an

Şunu deneyin: requests.get (' example.com ', verify = certifi.where ())
Nei

Yanıtlar:


460

Karşılaştığınız soruna güvenilmeyen bir SSL sertifikası neden oluyor.

Önceki bir yorumda bahsedilen @dirk gibi, en hızlı düzeltme verify=False:

requests.get('https://example.com', verify=False)

Bunun sertifikanın doğrulanmamasına neden olacağını lütfen unutmayın. Bu, uygulamanızı ortadaki adam saldırıları gibi güvenlik risklerine maruz bırakacaktır.

Tabii ki, yargı uygulayın. Yorumlarda belirtildiği gibi, bu , hızlı / ıskarta uygulamalar / komut dosyaları için kabul edilebilir, ancak gerçekten üretim yazılımına gitmemelidir .

Belirli bağlamınızda yalnızca sertifika denetimini atlamak kabul edilemezse, aşağıdaki seçenekleri göz önünde bulundurun, en iyi seçeneğiniz verifyparametreyi .pem, sertifikanın dosyasının yolu olan bir dizeye ayarlamaktır (bir çeşit güvenli tarafından almanız gerekir) anlamına geliyor).

Dolayısıyla, sürüm 2.0'dan itibaren verifyparametre, ilgili semantikleriyle aşağıdaki değerleri kabul eder:

  • True: sertifikanın kütüphanenin kendi güvenilir sertifika yetkililerine göre doğrulanmasına neden olur (Not: Hangi Kök Sertifika İsteklerinin, İstekler'den alınan RC'lerin güven veritabanı olan Certifi kütüphanesi tarafından kullanıldığını görebilirsiniz: Certifi - İnsanlar için Güven Veritabanı ).
  • False: sertifika doğrulamasını tamamen atlar .
  • Sertifikaları doğrulamak için kullanılacak isteklerin CA_BUNDLE dosyasının yolu.

Kaynak: İstekler - SSL Sertifika Doğrulaması

certAynı bağlantıdaki parametreye de bakın .


1
Evet, ubuntu'da dotCloud kullandığımda, aynı "sertifika doğrulama başarısız" çıktı. "/Usr/local/lib/python2.6/dist-packages/dotcloud/client/client.py" dosyasındaki "requests.session (başlıklar = üstbilgiler, kancalar = kancalar, doğrula = Yanlış)" ifadesinin ardından değiştirildi.
diyizm

2
Bu doğru olarak işaretlenmedi, ancak çalıştığını doğrulayabilirim (aşağıdaki cevapların aksine).
khalid13

40
@ khalid13: Bir balta baş ağrısı ilacı olarak "çalışır" (baş yok - baş ağrısı yok). Bu şekilde kullanmanın iyi bir fikir olduğu anlamına gelmez. verify=Falseana bilgisayarın SSL sertifikası denetimini devre dışı bırakır.
jfs

24
@JFSebastian Dürüst olmak gerekirse, ne yaptığınıza bağlıdır. Hızlı / ıskarta uygulamam için fazlasıyla yeterliydi.
khalid13

5
@diyism böyle bir değişiklik yapmak çok güvensiz geliyor …
binki

111

SSL doğrulaması ile ilgili istek belgelerinden :

İstekler, tıpkı bir web tarayıcısı gibi HTTPS istekleri için SSL sertifikalarını doğrulayabilir. Bir ana bilgisayarın SSL sertifikasını kontrol etmek için doğrulama bağımsız değişkenini kullanabilirsiniz:

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

SSL sertifikanızı doğrulamak istemiyorsanız, verify=False


4
Eh, verify = True ekledim, ancak yine de aynı hatayı aldım. Değişiklik yok. Başka bir şey gerekli olmalı, ama ne olabileceğini bilmiyorum.
TedBurrows

Sanırım şimdi SSL deliliğine düştüm. Bunu ilk get ... get'e ekledim (url1, headers = headers, cert = '/ etc / pki / tls / cert.pem', verify = True, config = my_config) Şimdi bu hatayı alıyorum. requests.exceptions.SSLError: [Errno 336265225] _ssl.c: 351: hata: 140B0009: SSL rutinleri: SSL_CTX_use_PrivateKey_file: PEM lib Bunun ne anlama geldiğine dair bir fikrim yok.
TedBurrows

14
Sertifikayı doğrulamak istemiyorsanız verify = False, kendinden imzalı bir sertifikanız varsa iow ayarlamanız yeterlidir
Dirk

16
Kendinden imzalı bir sertifikanız varsa, sertifikayı indirin ve dosya adına doğrula ayarını yapın. Verify = False değerini ayarlamak için hiçbir mazeret yoktur. verify = '/ path / to / cert.pem'
Matthias Urlichs

14
Maalesef Boud, istekler "web tarayıcısı gibi" HTTPS isteklerini işlemediği için bu cevabı aşağıya indirmem gerekiyordu. Tam SSL güven zinciri (ara sertifikalar dahil) bir sunucuda bildirilmezse ve fazladan sertifika indirilmesi gerekiyorsa, yukarıdaki SSL doğrulama hatasını alırsınız. Web tarayıcıları ek indirme işlemini yapar ve herhangi bir sertifika hatasını işaretlemez. Bu, bir web tarayıcısının ve İsteklerin farklı olmasının bir yoludur. Başkaları da var. İstekler bazı doğrulama işlemleri yapar, ancak tarayıcı kadar iyi değildir.
Louis Cremen

53

Kullanabileceğiniz CA dosyasının adı verify:

cafile = 'cacert.pem' # http://curl.haxx.se/ca/cacert.pem
r = requests.get(url, verify=cafile)

Eğer kullanırsanız verify=Trueo zaman requestssunucu sertifikasını imzaladığı CA olmayabilir kendi CA kümesi kullanır.


12
@ 9emE0iL18gxCqLT: Neden tüm sistemlerin sağladığınız yolu kullandığını düşünüyorsunuz? requestsdağıtım için paketlenmiş olabilir. python -mrequests.certsNereye işaret ettiğini bulmak için koş .
jfs

3
Python isteğinin cacert paketi güncel değilse, nasıl güncelleyebilirim?
CMCDragonkai

5
Bunu cacert.pemkıvrımdan kullanmamalısınız . Birçok iptal edilmiş certs içerir. Certifi'ye göz atın (İsteklerin kullandığı): certifi.io
Kenneth Reitz

3
@KennethReitz: 1- İstekler OP için başarısız olursa (aksi takdirde soru yoktu) 2- cacert.pemMozilla'dan (cURL ile) alınan CA sertifikaları - sadece bir örnektir (popüler bir web tarafından kullanılan CA listesi cevabın noktası o - -Browser sonra) olabilir bilmiyorum örnek olarak kullanılamaz olabilir varsayılan liste başarısız olursa, kendi CA dosyasını geçmektedir.
jfs

Bunu yapabilir ve istemci sertifikalarını aynı anda kullanabilir misiniz? Bununla ilgili sorunlar yaşıyorum.
user1156544

42

$ pip install -U requests[security]

  • Python 2.7.6'da test edildi @ Ubuntu 14.04.4 LTS
  • MacOSX 10.9.5'de (Mavericks) Python 2.7.5'de test edildi

Bu soru açıldığında (2012-05) İstekler sürümü 0.13.1 idi. 2.4.1 (2014-09) sürümünde , certifivarsa güvenlik kullanılarak "güvenlik" ekstraları tanıtıldı .

Şu anda (2016-09) ana sürüm 2.11.1, onsuz iyi çalışıyor verify=False. Ekstra requests.get(url, verify=False)takılıysa, kullanmaya gerek yoktur requests[security].


7
pip install -U requests[security] --no-cacheiki kez sabitlendi vepip install certifi==2015.04.28
Aamir Abro

@alanjds Kaynak kodunu düzenlemeden python'u bazı SSL sertifikalarına güvenecek şekilde veya sertifika doğrulamasını devre dışı bırakacak şekilde ama genel olarak çevrede yapılandırmak istersem ne olur? Örneğin, mevcut Python yardımcı programlarını (örn. AWS CLI) indirirsem ve sertifikalara güvenmek veya bu araçlar için sertifika doğrulamasını yoksaymak istersem?
Howiecamp

@ Howiecamp o zaman jf-sebastian cevap yoluyla gidebilirsiniz, sanırım: stackoverflow.com/a/12865159/798575
alanjds

@alanjds Ama cevabı kodu yazdığımı ve / veya koda erişebileceğimi varsaymıyor mu? Bunu çevre seviyesinde uygulamaya çalışıyorum.
Howiecamp

3
do pip install --upgrade pipistekleri güvenlik paketini yükleyerek diğer hataları önlemek için önce
Vincent Claes

40

Aynı sorunla karşılaştım ve ssl sertifikası aws boto3 kullanırken başarısız olan sorunu doğruladı, boto3 kodunu gözden geçirerek, REQUESTS_CA_BUNDLEayarlanmadı, bu yüzden manuel olarak ayarlayarak her iki sorunu düzelttim:

from boto3.session import Session
import os

# debian
os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(
    '/etc/ssl/certs/',
    'ca-certificates.crt')
# centos
#   'ca-bundle.crt')

Aws-cli için, ben REQUESTS_CA_BUNDLE ayarı ~/.bashrcbu sorunu çözecek tahmin (benim aws-cli onsuz çalıştığı için test değil).

REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt # ca-bundle.crt
export REQUESTS_CA_BUNDLE

2
Bu benim sorunumu çözdü! HTTPS API'lerine JSON çağrıları yapan bir kitaplıkta hata ayıklamak için Mac'te Charles Proxy kullanıyordum. Charless sertifikasını belirtildiği gibi yükledim, anahtarlığa ekledim, ancak Python ile başarısız olmaya devam etti: SSLError: ("kötü el sıkışma: Hata ([('SSL rutinleri', 'ssl3_get_server_certificate', 'sertifika doğrulama başarısız')],)" ,) Bunu düzeltmek için REQUESTS_CA_BUNDLE ekleme ve Charles sertifikasını anahtar zincirimden bir .pem dosyası olarak dışa aktarma hakkındaki önerilerinizi takip ettim. Şimdi çalışıyor!
mallyvai

Teşekkürler, aynı sorun açılan Fiddler ile oldu
user565447

@ user565447 Şu anda Fiddler ile bu çalışmayı sağlamaya çalışıyorum. REQUESTS_CA_BUNDLE ayarının Fiddler sertifikası için çalışması gerekir mi?
Howiecamp

19

Güvenebileceğiniz bir kitaplığınız requestsvarsa ve doğrulama yolunu (ile olduğu gibi pyvmomi) değiştiremiyorsanız, cacert.pemisteklerle birlikte gelenleri bulmanız ve CA'nızı oraya eklemeniz gerekir. İşte cacert.pemkonumu bulmak için genel bir yaklaşım :

pencereler

C:\>python -c "import requests; print requests.certs.where()"
c:\Python27\lib\site-packages\requests-2.8.1-py2.7.egg\requests\cacert.pem

linux

#  (py2.7.5,requests 2.7.0, verify not enforced)
root@host:~/# python -c "import requests; print requests.certs.where()"
/usr/lib/python2.7/dist-packages/certifi/cacert.pem

#  (py2.7.10, verify enforced)
root@host:~/# python -c "import requests; print requests.certs.where()"
/usr/local/lib/python2.7/dist-packages/requests/cacert.pem

Btw. @ istekler-devs, kendi cacerts talebi ile paket gerçekten, gerçekten sinir bozucu ... özellikle ilk sistem ca mağaza kullanmak gibi görünmüyor ve bu hiçbir yerde belgelenmiyor.

Güncelleme

bir kitaplık kullandığınız ve ca-bundle konumu üzerinde hiçbir kontrolünüz olmadığı durumlarda ca-bundle konumunu açıkça ana bilgisayar genelindeki ca-bundle olarak da ayarlayabilirsiniz:

REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-bundle.crt python -c "import requests; requests.get('https://somesite.com';)"

Yüzlerce kez: anahtar verifyyolu değiştirememek .
ghukill

Kendinden imzalı bir sertifika kullanıyorsanız ne olacak? CA bu durumda ne olurdu?
user1114

Küçük güncelleme - python 3.6 için, yazdırma komutu için parantez olmalıdır - python -c "içe aktarma istekleri; print (requests.certs.where ())"
user1114

15

Ben gspread kullanarak aynı sorunla karşı karşıya ve bu komutlar benim için çalışıyor:

sudo pip uninstall -y certifi
sudo pip install certifi==2015.04.28

Bu benim için yaptı. Thanks :)
alex-mcleod

4
Bu, certifi'nin eski sürümünden potansiyel olarak iptal edilmiş / güvenilmeyen sertifikaları yeniden yüklemenin dezavantajı vardır, NOT NOT.
dragon788

Herhangi bir nedenle piton 2.7 ilk versiyonlardan ile sopa zorunda eğer, sertifi geçersiz kılınması benim için çalıştı tek yaklaşımdır
seans

15

Uyarıları kaldırmak istiyorsanız aşağıdaki kodu kullanın.

import urllib3

urllib3.disable_warnings()

ve verify=Falsebirlikte request.getya da postyöntem,


12

Benzer bir sorunu çözmek için özel bir yaklaşım buldum. Fikir, sistemde saklanan ve başka bir ssl tabanlı uygulamalar tarafından kullanılan cacert dosyasını işaret etmektir .

Debian'da (diğer dağıtımlarda aynı olup olmadığından emin değilim) sertifika dosyaları (.pem) So'da depolanır /etc/ssl/certs/, bu benim için çalışan koddur:

import requests
verify='/etc/ssl/certs/cacert.org.pem'
response = requests.get('https://lists.cacert.org', verify=verify)

Hangi pemdosyayı seçtiğini tahmin etmek için, url'ye göz attım ve hangi Sertifika Yetkilisi'nin (CA) sertifikayı oluşturduğunu kontrol ettim.

DÜZENLEME: kodu düzenleyemiyorsanız (üçüncü bir uygulama çalıştırdığınız için) pemsertifikayı doğrudan içine eklemeyi deneyebilirsiniz /usr/local/lib/python2.7/dist-packages/requests/cacert.pem(örn. Dosyanın sonuna kopyalama).


2
Python tarafından kullanılan CA_BUNDLE hata ayıklaması için ilgili gönderi .
chk

/usr/local/lib/python2.7/dist-packages/requests/cacert.pemİşletim sistemi deposuna bir sembolik bağla değiştirmeye ne dersiniz ?
CMCDragonkai

8

Sertifika hakkında rahatsız değilseniz sadece kullanın verify=False.

import requests

url = "Write your url here"

returnResponse = requests.get(url, verify=False)

7

Hata ayıklama saatlerinden sonra bunu sadece aşağıdaki paketleri kullanarak çalıştırabilirim:

requests[security]==2.7.0  # not 2.18.1
cryptography==1.9  # not 2.0

kullanma OpenSSL 1.0.2g 1 Mar 2016

Bu paketler olmadan verify=Falseçalışma değildi.

Umarım bu birine yardımcı olur.


5

Ben de aynı sorunla karşılaştım. Orta sertifikayı sunucuma yüklemediğim anlaşılıyor (sadece aşağıda görüldüğü gibi sertifikanızın altına ekleyin).

https://www.digicert.com/ssl-support/pem-ssl-creation.htm

Ca-certificate paketinin kurulu olduğundan emin olun:

sudo apt-get install ca-certificates

Saati güncellemek de bu sorunu çözebilir:

sudo apt-get install ntpdate
sudo ntpdate -u ntp.ubuntu.com

Kendinden imzalı bir sertifika kullanıyorsanız, muhtemelen sisteminize manuel olarak eklemeniz gerekir.


Bu, yalnızca sistem sertifikalarını kullanmak için Debian / Ubuntu tarafından değiştirilen apt-get üzerinden İstek yüklemeleri için geçerlidir. Kendi, özenle seçilmiş CA paketine sahip uygun gemiler talep eder: certifi.io
Kenneth Reitz

Kök CA yeterli olmamalı mı? Neden ara ürünlere ihtiyacınız var?
timmy

5

İstek çağrıları kodun derinliklerinde bir yere gömüldüyse ve sunucu sertifikasını yüklemek istemiyorsanız, yalnızca hata ayıklama amacıyla , maymun derleme istekleri mümkündür:

import requests.api
import warnings


def requestspatch(method, url, **kwargs):
    kwargs['verify'] = False
    return _origcall(method, url, **kwargs)

_origcall = requests.api.request
requests.api.request = requestspatch
warnings.warn('Patched requests: SSL verification disabled!')

Asla üretimde kullanmayın!


4

Sanırım partiye çok geç ama benim gibi diğer gezginler için düzeltmeyi yapıştırmak istedim! Bu yüzden aşağıdakiler benim için Python 3.7.x üzerinde çalıştı

Terminalinize aşağıdakileri yazın

pip install --upgrade certifi      # hold your breath..

Betiğinizi / isteklerinizi tekrar çalıştırmayı deneyin ve çalışıp çalışmadığını görün (henüz düzeltilmeyeceğinden eminim!). Eğer işe yaramazsa, doğrudan terminalde aşağıdaki komutu çalıştırmayı deneyin

open /Applications/Python\ 3.6/Install\ Certificates.command  # please replace 3.6 here with your suitable python version

3

Bu sorun SAATLER için savaştım.

İstekleri güncellemeye çalıştım. Sonra sertifikayı güncelledim. Ben certifi.where () doğrulamak işaret etti (Kod zaten varsayılan olarak bunu yapar). Hiçbir şey çalışmadı.

Sonunda python sürümümü python 2.7.11 olarak güncelledim. Sertifikaların doğrulanma biçimiyle bazı uyumsuzlukları olan Python 2.7.5'deydim. Bir kez Python (ve diğer bağımlılıklar bir avuç) güncelledikten sonra çalışmaya başladı.


OpenSSL'yi> 1.0.1 sürümüne güncellediyseniz, sorun muhtemelen bundan daha fazlaydı. Aşağıdaki cevabımı gör. stackoverflow.com/a/44543047/1413201
Tim Ludwinski

Python 2.7.9'dan 2.7.10'a geçmek bunu benim için düzeltti.
crazystick

3

Bu @ rafael-almeida'nın cevabına benzer, ancak 2.11+ isteklerinden dolayı alabilecek 3 değer verifyolmadığını, aslında 4 olduğunu belirtmek istiyorum:

  • True: isteklerin dahili güvenilir CA'larına karşı doğrulama yapar.
  • False: sertifika doğrulamasını tamamen atlar . (Tavsiye edilmez)
  • Bir CA_BUNDLE dosyasının yolu. istekleri sunucunun sertifikalarını doğrulamak için bunu kullanır.
  • Genel sertifika dosyalarını içeren bir dizinin yolu. istekleri sunucunun sertifikalarını doğrulamak için bunu kullanır.

Cevabımın geri kalanı # 4, doğrulamak için sertifika içeren bir dizinin nasıl kullanılacağı hakkında:

Gereken genel sertifikaları edinin ve bir dizine yerleştirin.

Açıkçası, muhtemelen sertifikaları almak için bant dışı bir yöntem kullanmalısınız, ancak bunları herhangi bir tarayıcı kullanarak da indirebilirsiniz.

Sunucu bir sertifika zinciri kullanıyorsa, zincirdeki her bir sertifikayı aldığınızdan emin olun.

İstek belgelerine göre, sertifikaları içeren dizin önce "rehash" yardımcı programıyla ( openssl rehash) işlenmelidir .

(Bu, openssl 1.1.1+ sürümünü gerektirir ve tüm Windows openssl uygulamaları rehash'ı desteklemez. openssl rehashSizin için işe yaramazsa, https://github.com/ruby/openssl/blob/master adresinden rehash ruby ​​komut dosyasını çalıştırmayı deneyebilirsiniz. /sample/c_rehash.rb , bunu denemedim.)

Sertifikalarımı tanıma istekleri almakla ilgili bir sorunum vardı, ancak openssl x509 -outform PEMsertifikaları Base64 .pemformatına dönüştürme komutunu kullandıktan sonra her şey mükemmel çalıştı.

Ayrıca tembel yeniden şekillendirme de yapabilirsiniz:

try:
    # As long as the certificates in the certs directory are in the OS's certificate store, `verify=True` is fine.
    return requests.get(url, auth=auth, verify=True)
except requests.exceptions.SSLError:
    subprocess.run(f"openssl rehash -compat -v my_certs_dir", shell=True, check=True)
    return requests.get(url, auth=auth, verify="my_certs_dir")

2

Şu anda istek modülünde bu hataya neden olan ve v2.6.2 - v2.12.4 (ATOW) sürümlerinde bir sorun var: https://github.com/kennethreitz/requests/issues/2573

Bu sorun için geçici çözüm aşağıdaki satırı eklemektir: requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS'


FWIW, hala == 2.13.0 istekleri ile mevcut. Yukarıdaki geçici çözüm hala düzeltildi.
Tamás Szelei

1

@Rafael Almeida tarafından belirtildiği gibi, yaşadığınız sorun güvenilmeyen bir SSL sertifikasından kaynaklanmaktadır. Benim durumumda, SSL sertifikası sunucum tarafından güvenilmiyordu. Güvenlikten ödün vermeden bu sorunu gidermek için sertifikayı indirdim ve sunucuya yükledim (.crt dosyasına çift tıkladıktan sonra Sertifika Yükle ...).


0

Başka bir paketten istekler çağrılıyorsa seçenekler eklemek mümkün değildir. Bu durumda cacert paketine sertifika eklemek düz yoldur, örneğin, kök sertifikayı StartComClass1.pem'e indirdiğim "StartCom Sınıf 1 Birincil Ara Sunucu CA" yı eklemek zorunda kaldım. Virtualenv'im caldav olarak adlandırılırsa, sertifikayı şu şekilde ekledim:

cat StartComClass1.pem >> .virtualenvs/caldav/lib/python2.7/site-packages/pip/_vendor/requests/cacert.pem
cat temp/StartComClass1.pem >> .virtualenvs/caldav/lib/python2.7/site-packages/requests/cacert.pem

bunlardan biri yeterli olabilir, kontrol etmedim


0

Benzer veya aynı bir sertifika doğrulama sorunum vardı. 1.0.2'den daha düşük OpenSSL sürümlerinin, isteklerin bazen güçlü sertifikaları doğrulamada sorun yaşadığına bağlı olduğunu okudum ( buraya bakın ). CentOS 7, 1.0.1e kullanıyor gibi görünüyor.

CentOS'ta bu sorunu nasıl çözeceğinizden emin değildim, bu yüzden daha zayıf 1024bit CA sertifikalarına izin vermeye karar verdim.

import certifi # This should be already installed as a dependency of 'requests'
requests.get("https://example.com", verify=certifi.old_where())

ArcGIS tarafından kurulan bir Python 2.7.10 kullanıyorum ve kurulu bir sertifika modülü yok. Kurulu talep modülü 2.11.1 sürümündedir.
Lucas

0

Python 3.4.0'dan 3.4.6'ya yükseltmek zorunda kaldım

pyenv virtualenv 3.4.6 myvenv
pyenv activate myvenv
pip install -r requirements.txt

0

Benim durumumda neden oldukça önemsizdi.

SSL doğrulamasının birkaç gün öncesine kadar çalıştığını ve farklı bir makinede tam olarak çalıştığını biliyordum.

Bir sonraki adımım, sertifika içeriğini ve boyutunu, doğrulamanın çalıştığı makine ile çalışmadığı makine arasında karşılaştırmaktı.

Bu hızlı bir şekilde bana 'yanlış' çalışan makinede Sertifika iyi olmadığını belirleme yol açtı ve bir kez 'iyi' sertifika ile değiştirdikten sonra, her şey iyiydi.

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.