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 হস্তক্ষেপৰ সৈতে, সমকক্ষৰ প্ৰমাণপত্ৰ এই হোষ্টনামৰ বাবে মধ্যস্থকাৰীয়ে সৃষ্টি কৰা প্ৰমাণপত্ৰ হ'ব পাৰে। অন্য পথেৰে পোৱা প্ৰমাণপত্ৰৰ সৈতে তুলনা কৰোঁতে সেই পাৰ্থক্য ৰক্ষা কৰক।

সম্পৰ্কিত প্ৰবন্ধ