TLS parekoaren ziurtagiria HTTP proxy bidez irakurtzea Pythonen
Erabili Pythonen HTTPConnection tunel-laguntza socket-a balidatzen duen SSL testuinguru batekin bildu aurretik.
ssl.get_server_certificate ez da HTTP proxy batekin negoziatzen. Lehenengo tunela ezarri, gero TLS egin helmugako ostalari-izenarekin eta lortu parekoaren ziurtagiria.
Autentifikaziorik gabeko HTTP proxy baterako, HTTP proxy zerrendako hautagai baten ostalaria eta portua erabiliz:
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)
HTTPConnectionek CONNECT eskaera eta haren erantzuna kudeatzen ditu. Ondoren, SSL testuinguruak katea eta helmugaren identitatea egiaztatzen ditu ziurtagiria itzuli aurretik. Esku-emate honetarako ez da HTTP GETrik behar helmugara.
Inguruneak onartutako CA pribatu bat erabiltzen badu, kargatu CA hori testuinguruan egiaztapena desgaitzearen ordez. Baztertutako kate batek erakutsitako esku-ematea hutsarazten du.
getpeercert-ek parekoaren hosto-ziurtagiria itzultzen du, ez automatikoki esportatutako kate osoa. TLS atzemate fidagarriarekin, parekoaren ziurtagiria bitartekariak ostalari-izen honetarako sortutako ziurtagiria izan daiteke. Mantendu bereizketa hori beste bide batetik behatutako ziurtagiri batekin alderatzean.