Python मध्ये HTTP प्रॉक्सीद्वारे TLS पीअर प्रमाणपत्र वाचा
सॉकेटला सत्यापित करणाऱ्या SSL संदर्भात गुंडाळण्यापूर्वी Python च्या HTTPConnection टनेल समर्थनाचा वापर करा.
ssl.get_server_certificate HTTP प्रॉक्सीशी वाटाघाटी करत नाही. आधी टनेल स्थापित करा, नंतर गंतव्याच्या होस्टनावासह TLS करा आणि पीअर प्रमाणपत्र मिळवा.
प्रमाणीकरण नसलेल्या HTTP प्रॉक्सीसाठी, HTTP प्रॉक्सी यादीमधील उमेदवाराचा होस्ट आणि पोर्ट वापरून:
from contextlib import closing
import http.client
import ssl
hostname = "example.com"
context = ssl.create_default_context()
with closing(http.client.HTTPConnection(
"proxy.example.net", 8080, timeout=10
)) as connection:
connection.set_tunnel(hostname, 443)
connection.connect()
with context.wrap_socket(
connection.sock, server_hostname=hostname
) as tls:
certificate_der = tls.getpeercert(binary_form=True)
certificate_pem = ssl.DER_cert_to_PEM_cert(certificate_der)
HTTPConnection CONNECT विनंती आणि तिचा प्रतिसाद हाताळते. नंतर SSL संदर्भ प्रमाणपत्र परत देण्यापूर्वी साखळी आणि गंतव्याची ओळख पडताळतो. या हँडशेकसाठी गंतव्याकडे कोणतीही HTTP GET आवश्यक नाही.
पर्यावरण मंजूर खाजगी CA वापरत असल्यास, सत्यापन बंद करण्याऐवजी ती CA संदर्भात लोड करा. नाकारलेली साखळी दर्शविलेला हँडशेक अयशस्वी करते.
getpeercert पीअरचे पान प्रमाणपत्र परत करते, स्वयंचलितपणे निर्यात केलेली पूर्ण साखळी नाही. विश्वासार्ह TLS अडवणुकीसह, पीअर प्रमाणपत्र हे या होस्टनावासाठी मध्यस्थाने तयार केलेले प्रमाणपत्र असू शकते. दुसऱ्या मार्गाने पाहिलेल्या प्रमाणपत्राशी तुलना करताना तो फरक टिकवून ठेवा.