Funda isitifiketi se-TLS peer nge-HTTP proxy ku-Python
Sebenzisa ukusekelwa kwethaneli ye-HTTPConnection ku-Python ngaphambi kokugoqa i-socket ku-SSL context eqinisekisayo.
I-ssl.get_server_certificate ayixoxisani ne-HTTP proxy. Qala ngokumisa ithaneli, bese wenza i-TLS ngegama le-host okuyiwa kulo futhi uthole isitifiketi se-peer.
Nge-HTTP proxy engadingi ukuqinisekiswa, usebenzisa i-host ne-port yekhandidethi kusuka kuhlu lwe-HTTP proxy:
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)
I-HTTPConnection iphatha isicelo se-CONNECT kanye nempendulo yaso. I-SSL context bese iqinisekisa uchungechunge kanye nobuwena bendawo okuyiwa kuyo ngaphambi kokuba isitifiketi sibuyiswe. Akukho HTTP GET endaweni okuyiwa kuyo edingekayo kulokhu kubambisana ngesandla.
Uma indawo isebenzisa i-CA yangasese evunyelwe, layisha leyo CA ku-context esikhundleni sokuvala ukuqinisekisa. Uchungechunge olwenqatshiwe lwenza ukubambisana ngesandla okubonisiwe kuhluleke.
I-getpeercert ibuyisela isitifiketi seqabunga se-peer, hhayi uchungechunge oluphelele oluthunyelwe ngokuzenzakalela. Ngokugada i-TLS okuthenjwayo, isitifiketi se-peer singaba isitifiketi esakhiwe umlamuli saleli gama le-host. Gcina lowo mehluko lapho usiqhathanisa nesitifiketi esibonwe ngomunye umzila.