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 ତ୍ରୁଟି ଆସିପାରେ। ପ୍ରକ୍ସି ଲଗଇନ ଟନେଲ ଅନୁରୋଧକୁ ଅଧିକୃତ କରେ, ଭିତରର ୱେବସାଇଟକୁ ପ୍ରମାଣିତ କରେ ନାହିଁ।

ସ୍ୱୟଂ-ବନ୍ଦ ସକ୍ଷମ ଥିବାବେଳେ ସ୍ତରିତ ସକେଟ ବନ୍ଦ କଲେ ଏହାର ପରିବହନ ବନ୍ଦ ହୁଏ। ସାଧାରଣ ସମାପ୍ତି ପୂର୍ବରୁ ର୍ୟାପିଂ କିମ୍ବା ହ୍ୟାଣ୍ଡସେକ ବିଫଳ ହେଲେ ବାହ୍ୟ ସମ୍ବଳ ପରିସର ମଧ୍ୟ ସେହି ପରିବହନ ବନ୍ଦ କରେ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ