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 లోపం రావచ్చు. ప్రాక్సీ లాగిన్ టన్నెల్ అభ్యర్థనను అధికారం ఇస్తుంది, లోపలి వెబ్‌సైట్‌ను ప్రామాణీకరించదు.

ఆటో-క్లోజ్ ప్రారంభంలో ఉన్నప్పుడు పొరల సాకెట్‌ను మూసివేయడం దాని రవాణాను మూసివేస్తుంది. సాధారణ పూర్తి కాకముందే ర్యాపింగ్ లేదా హ్యాండ్‌షేక్ విఫలమైతే బయటి వనరు పరిధి కూడా ఆ రవాణాను మూసివేస్తుంది.

సంబంధిత వ్యాసాలు