Erabili helmugaren identitatea Java TLSrako SOCKS bidez
Konektatu lehenengo SOCKS bidez, eta gero gainjarri SSLSocket bat webgunearen ostalari-izenarekin eta HTTPS amaierako puntuaren egiaztapen esplizituekin.
SOCKS amaierako puntuak webgunera eramaten zaitu. Konexio horren barruko TLS parekidea webgunea bera da, beraz eman helmugaren ostalari-izena socket-en lantegi gainjarriari:
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.
}
}Pasarteak Java sareen eta TLS inportazio estandarrak, lehendik dagoen konfiantza-konfigurazio lehenetsia eta proxy kredentzialik behar ez duen SOCKS konexioa suposatzen ditu. Esku-ukaldiaren trukea egiten du; aplikazioak oraindik HTTP eskaera bat bidali behar du zerbitzariak espero duen formatuan. Bide publiko baimenduetako HTTPS helburu publikoetarako, SOCKS proxy zerrendak hautagai amaierako puntuak eskaintzen ditu; egokitu zerbitzariaren bertsioa eta ostalari-izenen euskarria Java socket bide honetara.
Irakurri adibideko bi identitateak
127.0.0.1:1080 proxyaren amaierako puntua da, Java prozesu honetatik irisgarria. destination eta destinationPort webgunea identifikatzen dute. createUnresolved ostalari-izen hori SOCKS biderako gordetzen du, bezeroan aurrez ebazten ez duen bitartean.
createSocket gainjarriak helmugaren identitatea jasotzen du. setEndpointIdentificationAlgorithm("HTTPS") berariaz eskatzen ditu bere ostalari-izenaren egiaztapenak. SSLSocket gordin baten ziurtagiri-katearen konfiantzak ez du berez frogatzen ostalari-izenaren egiaztapena gaituta dagoenik. Proxyaren izena edo loopbacka ordezkatzeak desadostasuna isilarazteko amaierako puntu okerra autentifikatu dezake.
Eduki konfiantza eta garbiketa beren etapetan
Lantegi lehenetsiak JVM-ren konfiantza-antolamendu konfiguratua erabiltzen du. Eskakizun pribatua duen aplikazio batek, ordea, behar bezala hasitako SSLContext lantegia erabil dezake. Aukera hori SOCKS bidetik bereizita dago; ziurtagiri guztiak onartzen dituen konfiantza-kudeatzaileak ez du parekide-izen okerra konpontzen.
SOCKS ukapen bat TLS baino lehen gertatzen da; ziurtagiri ez-fidagarri bat edo ostalari-izen okerra TLS bitartean huts egiten du; gero HTTP errore bat etor daiteke. Proxyan saioa hasten duenak tunelaren eskaera baimendu egiten du, ez barruko webgunea autentifikatu.
Socket gainjarria itxiera automatikoa gaituta ixteak bere garraioa ixten du. Kanpo-baliabideen esparruak garraio hori ere ixten du bilduketa edo esku-ukaldia amaiera normalaren aurretik huts egiten badu.