BPO 45312 Nosy @pfmoore, @tjguk, @zware, @zooba, @MDM-79, @pukkandan Dependencies bpo-35665: Function ssl.create_default_context raises exception on Windows 10 when called with ssl.Purpose.SERVER_A...
github.com
U samom thread-u (migrirano iz bugs.python.org) korisnici iz Srbije objašnjavaju da su ti
“MUPCA Root” sertifikati “nužni … da se čitaju lične karte i koriste sertifikati” i da problem “pogađa broj Python aplikacija”, uz konkretne primere (npr. QGIS, Fusion 360), jer Python na Windowsu pri ssl.create_default_context() učitava cert store i “pukne” na “lošem” sertifikatu (npr. ssl.SSLError: not enough data: cadata does not contain a certificate).
2
Povezani GitHub issue koji se u tom thread-u navodi kao “reproducer” (Python apps pucaju kada Windows cert store sadrži “bad certificates”) je ovaj:
<span><span>yt-dlp/yt-dlp — Issue #1060</span></span><br><span><span>SSLError when windows cert store contains bad certificates</span></span><br><span><span>
https://github.com/yt-dlp/yt-dlp/issues/1060</span></span>
- GitHub Issue: jupyter/notebook #42451
- Konkretan komentar: Korisnik rupurut je 28.12 avgusta 2019.2 napisao: "If you happen to use ASSECO 24x7 banking app, then you need to exclude those certificates as well, cause they seem to have the same issue."
Pored toga, ovaj problem je detaljno dokumentovan i na
Dropbox Community forumu (jer Dropbox koristi Python), gde je povezan sa zvaničnim Python bug-om:
- Python Bug Tracker: Issue 35665 - ssl.SSLError: nested asn1 error13
- Ovde je tehnički objašnjeno da stariji/loše generisani sertifikati (koje koristi MUP i domaće banke) imaju neispravnu ASN.1 strukturu koja ruši OpenSSL (biblioteku koju Python koristi).1
Šta je zapravo problem?
Kada instaliraš softver za lične karte (
Čelik) ili e-banking rešenja domaćih banaka (Asseco), oni u tvoj Windows "Trusted Root Certification Authorities" ubacuju sertifikate koji nisu u skladu sa strogim standardima koje očekuju moderne verzije OpenSSL-a (koji Python koristi).
Problematični sertifikati su najčešće:
- 24x7.co.yu Root CA (Najčešći krivac, koristi ga Asseco softver za banke)1
- 24x7.co.yu Digitrust CA1
- MUPCARoot (u nekim starijim verzijama)1
Simptomi
Kada pokušaš da koristiš pip install, requests.get() ili pokreneš Python aplikaciju (kao Dropbox ili Jupyter), dobijaš grešku:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: nested asn1 error (_ssl.c:xxxx)
1
Rešenje koje zajednica predlaže
Jedino trajno rešenje koje korisnici prijavljuju je brisanje ovih sertifikata iz Windows-a kada se ne koriste (ili korišćenje certmgr.msc da se oni privremeno uklone/onemoguće dok programiraš u Python-u).
1
Alternativno, za čitanje lične karte na Linux-u i Mac-u (a radi i na Windows-u bez instalacije celog MUP bloatware-a), domaća zajednica je napravila open-source rešenje koje ne pravi ove probleme: