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.

Artikli relatati