SOCKS एंडपॉइंट तुम्हाला वेबसाइटपर्यंत नेतो. त्या कनेक्शनमधील TLS सहभागी ही वेबसाइट स्वतः आहे, म्हणून गंतव्याचे होस्टनाव थर दिलेल्या सॉकेट फॅक्टरीला द्या:

String destination = "example.com";
int destinationPort = 443;
Proxy proxy = new Proxy(
    Proxy.Type.SOCKS,
    new InetSocketAddress("127.0.0.1", 1080)
);

try (Socket transport = new Socket(proxy)) {
    transport.connect(
        InetSocketAddress.createUnresolved(destination, destinationPort),
        5000
    );
    SSLSocketFactory factory =
        (SSLSocketFactory) SSLSocketFactory.getDefault();
    try (SSLSocket tls = (SSLSocket) factory.createSocket(
            transport, destination, destinationPort, true)) {
        SSLParameters parameters = tls.getSSLParameters();
        parameters.setEndpointIdentificationAlgorithm("HTTPS");
        tls.setSSLParameters(parameters);
        tls.setSoTimeout(15000);
        tls.startHandshake();
        // Send the application's HTTPS request through tls.
    }
}

हा तुकडा मानक Java नेटवर्किंग आणि TLS आयात, विद्यमान डीफॉल्ट ट्रस्ट कॉन्फिगरेशन आणि प्रॉक्सी क्रेडेन्शियल्स न लागणारे SOCKS कनेक्शन गृहीत धरतो. तो हँडशेक करतो; अनुप्रयोगाला अजूनही सर्व्हरला अपेक्षित स्वरूपात HTTP विनंती पाठवावी लागते. परवानगी असलेल्या सार्वजनिक मार्गांवरील सार्वजनिक HTTPS लक्ष्यांसाठी SOCKS प्रॉक्सी सूची उमेदवार एंडपॉइंट देते; सर्व्हरची आवृत्ती आणि होस्टनाव समर्थन या Java सॉकेट मार्गाशी जुळवा.

उदाहरणातील दोन ओळखी वाचा

127.0.0.1:1080 प्रॉक्सी एंडपॉइंट आहे, या Java प्रक्रियेतून पोहोचण्यायोग्य. destination आणि destinationPort वेबसाइट ओळखतात. createUnresolved क्लायंटवर लवकर सोडवण्याऐवजी SOCKS मार्गासाठी ते होस्टनाव ठेवते.

थर दिलेला createSocket गंतव्याची ओळख घेतो. setEndpointIdentificationAlgorithm("HTTPS") स्पष्टपणे त्याच्या होस्टनाव तपासण्यांची विनंती करतो. कच्च्या SSLSocket चा प्रमाणपत्र-साखळी विश्वास स्वतःच होस्टनाव पडताळणी सक्षम आहे हे सिद्ध करत नाही. विसंगती दाबण्यासाठी प्रॉक्सीचे नाव किंवा loopback बदलल्यास चुकीचा एंडपॉइंट प्रमाणित होऊ शकतो.

विश्वास आणि स्वच्छता त्यांच्या टप्प्यांसोबत ठेवा

डीफॉल्ट फॅक्टरी JVM ची कॉन्फिगर केलेली ट्रस्ट व्यवस्था वापरते. खाजगी आवश्यकता असलेला अनुप्रयोग त्याऐवजी योग्यरित्या सुरू केलेली SSLContext फॅक्टरी वापरू शकतो. ती निवड SOCKS मार्गापासून वेगळी आहे; प्रत्येक प्रमाणपत्र स्वीकारणारा ट्रस्ट व्यवस्थापक चुकीचे सहभागी नाव दुरुस्त करत नाही.

SOCKS नकार TLS च्या आधी होतो; अविश्वसनीय प्रमाणपत्र किंवा चुकीचे होस्टनाव TLS दरम्यान अयशस्वी होते; त्यानंतर HTTP त्रुटी येऊ शकते. प्रॉक्सी लॉगिन टनेल विनंतीला अधिकृत करते, आतली वेबसाइट प्रमाणित करत नाही.

स्वयं-बंद सक्षम असताना थर दिलेला सॉकेट बंद केल्यास त्याचे वाहतूक बंद होते. सामान्य पूर्णतेपूर्वी गुंडाळणे किंवा हँडशेक अयशस्वी झाल्यास बाह्य संसाधन व्याप्तीही ते वाहतूक बंद करते.

संबंधित लेख