Python pip install SSL Sertifika sorunu

11 Şub

Python geliştirme sırasında ihtiyaç duyulan paketlerin bulunduğu repository adresine bazı durumlarda erişim sorunları yaşanabilir. Bu durumlardan biri de firewall arkasında bulunan sistemlerden, https protokolü ile repository erişimi talep edildiğinde, SSL sertifikalarının ilgili firewall tarafından değiştirilmesi nedeni ile meydana gelebilecek sertifika sorunudur. Kendi çalışmalarım sırasında Sophos filrewall arkasında çalışırken böyle bir sorunla karşılaştım.

Python geliştirme IDE’si PyCharm ile geliştirme yaparken Python paketlerini yüklemeye çalıştığınızda aşağıdaki ekran ile karşılaşabilirsiniz. Aşağıdaki örnekte Redis paketinin yüklenmesi sırasında karşılaşılan SSL sorunu vurgulanmıştır.

Bu durumdan kurtulabilmek için PyCharm arayüzünde yapılması gereken, paket yükleme arayüzündeki options kısmına –trusted-host pypi.python.org –trusted-host files.pythonhosted.org –trusted-host pypi.org ayarlarını girmektir.

Bu şekilde yükleme yapıldığında SSL sorunu ortadan kalkacaktır.

PyCharm kullanmadan, pip komutlarını konsol arayüzü aracılığı ile kullanarak yükleme yapmak için gerekli komut:  pip install redis –trusted-host pypi.python.org –trusted-host files.pythonhosted.org –trusted-host pypi.org şeklindedir.

Ancak geliştirme sürecinde onlarca paket yükleme işlemi olacağını göz önüne aldığımızda her defasında bu komutu kullanmak çok ta pratik bir çözüm değildir. Bunun yerinde pip ayarlarını global olarak pip.ini dosyasına eklemek, bizi her defasında aynı komutları girmekten kurtaracaktır. Python 3.7 versiyonu için Windows 10 ortamında pip.ini dosyasına C:\ProgramData\pip\pip.ini şeklide erişebilmek mümkündür.

Artık her pip install <package name> komutu, SSL sorununa takılmadan çalışacaktır.

Stackoverflow üzerinde tartışılan pip always fails ssl verification başlıklı soruya verilen çözüm cevabında belirtildiği üzere, trusted-host  seçeneği aslında SSL’yi atlamaz, ancak geçerli (ya da herhangi bir) HTTPS bulunmadığında (ve yalnızca) ilgili ana bilgisayarı güvenilir olarak işaretler.