SOCKS मा Java TLS का लागि गन्तव्यको पहिचान प्रयोग गर्नुहोस्
पहिले SOCKS मार्फत जडान गर्नुहोस्, त्यसपछि वेबसाइटको होस्टनाम र स्पष्ट HTTPS अन्त्य बिन्दु जाँचसहित SSLSocket तह गर्नुहोस्।
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 त्रुटि आउन सक्छ। प्रोक्सी लगइनले टनेल अनुरोध अधिकृत गर्छ, भित्रको वेबसाइट प्रमाणित गर्दैन।
स्वतः-बन्द सक्षम हुँदा तह लगाइएको सकेट बन्द गर्दा यसको यातायात बन्द हुन्छ। सामान्य समाप्तिअघि र्यापिङ वा ह्यान्डशेक असफल भएमा बाहिरी स्रोत क्षेत्रले पनि त्यो यातायात बन्द गर्छ।