Sebenzisa ubunikazi bendawo oya kuyo ku-Java TLS nge-SOCKS
Xhuma nge-SOCKS kuqala, bese ufaka i-SSLSocket enegama lomhosi wewebhusayithi kanye nokuhlola okuqondile kwe-HTTPS.
I-SOCKS endpoint ikusa kuwebhusayithi. Uzakwabo we-TLS ngaphakathi kwalokho kuxhumana iwebhusayithi ngokwayo, ngakho dlulisa igama lomhosi lwendawo oya kuyo ku-socket factory enezingqimba:
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.
}
}Lesi siqephu sicabanga ukungeniswa okujwayelekile kwe-Java networking ne-TLS, ukulungiselelwa kokuthemba okuzenzakalelayo okukhona kanye nokuxhumana kwe-SOCKS okungadingi ubufakazi be-proxy. Kwenza ukuxhawula izandla; uhlelo kusamele luthumele isicelo se-HTTP ngefomethi elindelwe iseva. Ngemigomo ye-HTTPS yomphakathi emizileni yomphakathi evunyelwe, uhlu lwama-proxy e-SOCKS lunikeza ama-endpoint angaba khona; fanisa inguqulo yeseva nokusekelwa kwegama lomhosi nalo mzila we-socket ye-Java.
Funda ubunikazi obubili esibonelweni
127.0.0.1:1080 iyindawo yokuphela ye-proxy, efinyeleleka kule nqubo ye-Java. destination ne-destinationPort bakhomba iwebhusayithi. I-createUnresolved igcina lelo gama lomhosi lomzila we-SOCKS esikhundleni sokulixazulula kusenesikhathi kuklayenti.
I-createSocket enezingqimba ithola ubunikazi bendawo oya kuyo. I-setEndpointIdentificationAlgorithm("HTTPS") icela ngokusobala ukuhlolwa kwayo kwegama lomhosi. Ukuthembela kuchunge lwezitifiketi lwe-SSLSocket eluhlaza akukufakazeli ngokwako ukuthi ukuqinisekiswa kwegama lomhosi kunikwe amandla. Ukushintsha igama le-proxy noma i-loopback ukuze kucindezelwe ukungafani kungase kuqinisekise i-endpoint engalungile.
Gcina ukuthembela nokuhlanza nezigaba zako
Ifekthri ezenzakalelayo isebenzisa ukuhleleka kokuthemba okulungiselwe kwe-JVM. Uhlelo olunezimfuneko eziyimfihlo lungasebenzisa ifekthri yalo ye-SSLContext eqaliswe ngendlela efanele esikhundleni salokho. Lokho kukhetha kuhlukene nomzila we-SOCKS; umphathi wokuthemba owamukela isitifiketi ngasinye akalungisi igama lozakwabo elingalungile.
Ukwenqatshwa kwe-SOCKS kwenzeka ngaphambi kwe-TLS; isitifiketi esingathenjwayo noma igama lomhosi elingalungile kuyahluleka phakathi ne-TLS; iphutha le-HTTP lingalandela ngemuva kwalokho. Ukungena ku-proxy kugunyaza isicelo somhubhe hhayi ukuqinisekisa iwebhusayithi engaphakathi kuwo.
Ukuvala i-socket enezingqimba lapho ukuvala okuzenzakalelayo kuvuliwe kuvala ukuthutha kwayo. Umkhakha wensiza wangaphandle nawo uvala lokho kuthutha uma ukusonga noma ukuxhawula izandla kwehluleka ngaphambi kokuqedwa okuvamile.