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 ದೋಷ ಬರಬಹುದು. ಪ್ರಾಕ್ಸಿ ಲಾಗಿನ್ ಸುರಂಗ ವಿನಂತಿಗೆ ಅಧಿಕಾರ ನೀಡುತ್ತದೆ, ಒಳಗಿನ ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ದೃಢೀಕರಿಸುವುದಿಲ್ಲ.

ಸ್ವಯಂ-ಮುಚ್ಚುವಿಕೆ ಸಕ್ರಿಯವಾಗಿರುವಾಗ ಲೇಯರ್ ಮಾಡಿದ ಸಾಕೆಟ್ ಅನ್ನು ಮುಚ್ಚುವುದು ಅದರ ಸಾಗಣೆಯನ್ನು ಮುಚ್ಚುತ್ತದೆ. ಸಾಮಾನ್ಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗೆ ಮೊದಲು ಸುತ್ತುವಿಕೆ ಅಥವಾ ಹ್ಯಾಂಡ್‌ಶೇಕ್ ವಿಫಲವಾದರೆ ಹೊರಗಿನ ಸಂಪನ್ಮೂಲ ವ್ಯಾಪ್ತಿಯೂ ಆ ಸಾಗಣೆಯನ್ನು ಮುಚ್ಚುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು