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 ਗਲਤੀ ਆ ਸਕਦੀ ਹੈ। ਪ੍ਰੌਕਸੀ ਲੌਗਇਨ ਟਨਲ ਬੇਨਤੀ ਨੂੰ ਅਧਿਕਾਰ ਦਿੰਦਾ ਹੈ, ਅੰਦਰ ਦੀ ਵੈੱਬਸਾਈਟ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕਰਦਾ।
ਆਟੋ-ਬੰਦ ਚਾਲੂ ਹੋਣ ਉੱਤੇ ਪਰਤਦਾਰ ਸਾਕਟ ਬੰਦ ਕਰਨ ਨਾਲ ਇਸ ਦੀ ਢੋਆ-ਢੁਆਈ ਬੰਦ ਹੁੰਦੀ ਹੈ। ਆਮ ਮੁਕੰਮਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਰੈਪਿੰਗ ਜਾਂ ਹੈਂਡਸ਼ੇਕ ਫੇਲ੍ਹ ਹੋਣ ’ਤੇ ਬਾਹਰੀ ਸਰੋਤ ਖੇਤਰ ਵੀ ਉਹ ਢੋਆ-ਢੁਆਈ ਬੰਦ ਕਰਦਾ ਹੈ।