Teisteanas peer TLS a leughadh tro phròsgaid HTTP ann am Python
Cleachd taic tunaile HTTPConnection Python mus cuir thu an socket ann an co-theacs SSL a nì dearbhadh.
Cha dèan ssl.get_server_certificate rèiteachadh le pròsgaid HTTP. Stèidhich an tunaile an toiseach, an uair sin dèan TLS le ainm an aoigh-uidhe agus faigh teisteanas a' peer.
Airson pròsgaid HTTP gun dearbhadh, a' cleachdadh aoigh is port tagraiche bhon liosta phròsgaidean 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)
Làimhsichidh HTTPConnection an t-iarrtas CONNECT agus am freagairt. An uair sin nì an co-theacs SSL dearbhadh air a' cheangal agus air dearbh-aithne an uidhe mus till an teisteanas. Chan eil feum air HTTP GET chun an uidhe airson a' chroitheadh-làimhe seo.
Ma chleachdas an àrainneachd CA phrìobhaideach aontaichte, luchdaich an CA sin dhan cho-theacs an àite dearbhadh a chur dheth. Bheir ceangal air a dhiùltadh fàilligeadh air a' chroitheadh-làimhe a chithear.
Tillidh getpeercert teisteanas duille a' peer, chan e ceangal slàn a chaidh a thoirt a-mach gu fèin-obrachail. Le eadar-theachd TLS earbsach, faodaidh teisteanas a' peer a bhith na theisteanas a chruthaich an eadar-mheadhanair airson an ainm aoigh seo. Cùm an t-eadar-dhealachadh sin nuair a choimeasas tu e ri teisteanas a chaidh fhaicinn tro shlighe eile.