DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

2

Python requests üzerinde sertifika kullanımı

Python'ın request kütüphanesinde çalışırken özellikle self-signed sertifikalar ile sorunlar yaşandığında muhtemelen sistem geneline eklediğiniz bir sertifikanın Python request kütüphanesinde kullanılmadığını görebilirsiniz.

Bunun örneği için aşağıdaki gibi bir Python kodu yazarak başlayabiliriz.

import requests

response = requests.get(url="https://en.wikipedia.org/wiki/Zonguldak")
Enter fullscreen mode Exit fullscreen mode

Bu kod sonucu aşağıdaki gibi bir hata alınmaktadır.

requests.exceptions.SSLError: HTTPSConnectionPool(host='en.wikipedia.org', port=443): Max retries exceeded with url: /wiki/Zonguldak (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:997)')))
Enter fullscreen mode Exit fullscreen mode

Bu hatadan kurtulmanın bir yolu aşağıdaki satırda "verify = False" parametresinin eklenmesi olarak internette çözüm bulunabilmektedir. Fakat bu adımla birlikte sertifika kontrolünü kontrol edilmemesini sağlamaktasınız.

response = requests.get(url="https://en.wikipedia.org/wiki/Zonguldak",verify = False)
Enter fullscreen mode Exit fullscreen mode

Bu nedenle Debian tabanlı sistemlerde bu sorunun en güzel çözümü aşağıdaki gibi uygulanabilmektedir. RPM tabanlı sistemlerde ise ca-certificates.crt yerine ca-bundle.crt kullanılmaktadır.

import requests
import os

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

response = requests.get(url="https://en.wikipedia.org/wiki/Zonguldak")
Enter fullscreen mode Exit fullscreen mode

Bu şekilde çalıştırıldığında artık istenilen sunucuya SSL ile bağlantı kurabilirsiniz. Tabi ki sistem genelinde ilgili sertifikanın eklenmiş olması gerekeceğini unutmayalım.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay