SOCKS galapunkts aizved jūs uz vietni. TLS partneris šajā savienojumā ir pati vietne, tāpēc nododiet galamērķa resursdatora nosaukumu slāņotajai ligzdas fabrikai:

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 fragments pieņem standarta Java tīkla un TLS importus, esošu noklusējuma uzticēšanās konfigurāciju un SOCKS savienojumu, kuram nav nepieciešami starpniekservera akreditācijas dati. Tas veic rokasspiedienu; lietojumprogrammai joprojām ir jānosūta HTTP pieprasījums servera gaidītajā formātā. Publiskiem HTTPS mērķiem atļautos publiskos maršrutos SOCKS starpniekserveru saraksts piedāvā kandidāta galapunktus; saskaņojiet servera versiju un resursdatora nosaukumu atbalstu ar šo Java ligzdas ceļu.

Izlasiet divas identitātes piemērā

127.0.0.1:1080 ir starpniekservera galapunkts, sasniedzams no šī Java procesa. destination un destinationPort identificē vietni. createUnresolved saglabā šo resursdatora nosaukumu SOCKS ceļam, tā vietā lai to nekavējoties atrisinātu klientā.

Slāņotā createSocket saņem galamērķa identitāti. setEndpointIdentificationAlgorithm("HTTPS") skaidri pieprasa tā resursdatora nosaukuma pārbaudes. Neapstrādāta SSLSocket sertifikātu ķēdes uzticēšanās pati par sevi nepierāda, ka resursdatora nosaukuma pārbaude ir iespējota. Starpniekservera nosaukuma vai loopback aizstāšana, lai nomāktu neatbilstību, var autentificēt nepareizu galapunktu.

Turiet uzticēšanos un tīrīšanu to posmos

Noklusējuma fabrika izmanto konfigurēto JVM uzticēšanās kārtību. Lietojumprogramma ar privātām prasībām tā vietā var izmantot savu pareizi inicializēto SSLContext fabriku. Šī izvēle ir atsevišķa no SOCKS maršruta; uzticēšanās pārvaldnieks, kas pieņem katru sertifikātu, nelabo nepareizu partnera nosaukumu.

SOCKS noraidījums notiek pirms TLS; neuzticams sertifikāts vai nepareizs resursdatora nosaukums neizdodas TLS laikā; pēc tam var sekot HTTP kļūda. Pieslēgšanās starpniekserverim autorizē tuneļa pieprasījumu, nevis autentificē tajā esošo vietni.

Slāņotās ligzdas aizvēršana ar iespējotu automātisko aizvēršanu aizver tās transportu. Ārējā resursa tvērums arī aizver šo transportu, ja ietīšana vai rokasspiediens neizdodas pirms parastas pabeigšanas.

Saistītie raksti