Uża l-identità tad-destinazzjoni għal Java TLS fuq SOCKS
Qabbad l-ewwel permezz ta' SOCKS, imbagħad saff SSLSocket bl-isem tal-host tas-sit u verifiki espliċiti tal-endpoint HTTPS.
L-endpoint SOCKS iwasslek għas-sit. Il-peer TLS ġewwa dik il-konnessjoni huwa s-sit innifsu, għalhekk għaddi l-isem tal-host tad-destinazzjoni lill-fabbrika tas-sockets imsaffra:
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.
}
}Is-silta tassumi imports standard ta' Java networking u TLS, konfigurazzjoni ta' fiduċja default eżistenti u konnessjoni SOCKS li ma teħtieġx kredenzjali tal-proxy. Hija twettaq il-handshake; l-applikazzjoni xorta trid tibgħat talba HTTP fil-format li jistenna s-server. Għal miri HTTPS pubbliċi fuq rotot pubbliċi permessi, il-lista tal-proxies SOCKS toffri endpoints kandidati; qabbel il-verżjoni tas-server u l-appoġġ tal-ismijiet tal-host ma' dan il-passaġġ tas-socket Java.
Aqra ż-żewġ identitajiet fl-eżempju
127.0.0.1:1080 huwa l-endpoint tal-proxy, aċċessibbli minn dan il-proċess Java. destination u destinationPort jidentifikaw is-sit. createUnresolved iżomm dak l-isem tal-host għall-passaġġ SOCKS minflok ma jsolvih minnufih fuq il-klijent.
Il-createSocket imsaffar jirċievi l-identità tad-destinazzjoni. setEndpointIdentificationAlgorithm("HTTPS") jitlob b'mod espliċitu l-verifiki tal-isem tal-host tiegħu. Il-fiduċja fil-katina taċ-ċertifikati ta' SSLSocket mhux maħdum waħedha ma tistabbilixxix li l-verifika tal-isem tal-host hija attivata. Is-sostituzzjoni tal-isem tal-proxy jew tal-loopback biex trażżan nuqqas ta' qbil tista' tawtentika l-endpoint żbaljat.
Żomm il-fiduċja u t-tindif mal-fażijiet tagħhom
Il-fabbrika default tuża l-arranġament ta' fiduċja kkonfigurat tal-JVM. Applikazzjoni b'rekwiżiti privati tista' minflok tuża l-fabbrika SSLContext tagħha inizjalizzata kif xieraq. Dik l-għażla hija separata mill-passaġġ SOCKS; maniġer ta' fiduċja li jaċċetta kull ċertifikat ma jsewwix isem ta' peer żbaljat.
Ċaħda SOCKS isseħħ qabel TLS; ċertifikat mhux fiduċjuż jew isem tal-host żbaljat ifalli waqt TLS; żball HTTP jista' jiġi warajh. Il-login fil-proxy jawtorizza t-talba tat-tunnel minflok ma jawtentika s-sit ġewwa fih.
L-għeluq tas-socket imsaffar bl-għeluq awtomatiku attivat jagħlaq it-trasport tiegħu. Il-firxa tar-riżorsi ta' barra wkoll tagħlaq dak it-trasport jekk l-imballaġġ jew il-handshake ifallu qabel it-tlestija normali.