ssl.get_server_certificate samráðist ikki við ein HTTP-proxy. Set tunnilin upp fyrst, ger síðani TLS við málnavninum hjá málstøðini og fá mótparta skírteinið.

Fyri ein HTTP-proxy uttan samvátting, við at brúka vert og port hjá einum valmøguleika úr HTTP-proxy listanum:

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 viðgerðir CONNECT-fyrirspurningin og svarið uppá. Síðani váttar SSL-samhengið kjusuna og samsemi málstøðarinnar, áðrenn skírteinið verður latið aftur. Ongin HTTP GET til málstøðina er neyðug fyri hesa handtøku.

Um umhvørvið brúkar eitt góðkent privat CA, les tað CA inn í samhengið í staðin fyri at sløkkja vátting. Ein avvíst kjusla letur vístu handtøkuna miseydnast.

getpeercert letur blaðskírteinið hjá mótpartinum aftur, ikki eina fulla kjuslu, sum verður útflutt sjálvvirkandi. Við álítandi TLS-avlurting kann mótparta skírteinið vera skírteinið, sum millumliðið hevur gjørt fyri hetta málnavnið. Varðveit tann munin, tá tú samanber tað við eitt skírteini, sum er sætt gjøgnum aðra leið.

Skyldar greinar