D'Identitéit vum Zil fir Java TLS iwwer SOCKS benotzen
Fir d'éischt iwwer SOCKS verbannen, dann e SSLSocket mat dem Hostnumm vun der Websäit an expliziten HTTPS-Endpunktprüfunge schichten.
Den SOCKS-Endpunkt bréngt dech op d'Websäit. Den TLS-Peer bannent dëser Verbindung ass d'Websäit selwer, also gëff den Hostnumm vum Zil un d'geschicht Socket-Fabrik:
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.
}
}Den Auszuch setzt Standard-Java-Netzwierk- an TLS-Importen, eng existéierend Standardvertrauenskonfiguratioun an eng SOCKS-Verbindung ouni Proxy-Anmeldedaten viraus. Et mécht den Handshake; d'Applikatioun muss nach eng HTTP-Ufro am vum Server erwaarten Format schécken. Fir ëffentlech HTTPS-Ziler op erlaabten ëffentlechen Trajeten bitt d'SOCKS-Proxy-Lëscht Kandidat-Endpunkten; passt d'Versioun vum Server an d'Ënnerstëtzung vun Hostnimm un dësen Java-Socket-Pad un.
Liest déi zwou Identitéiten am Beispill
127.0.0.1:1080 ass den Endpunkt vum Proxy, erreechbar aus dësem Java-Prozess. destination an destinationPort identifizéieren d'Websäit. createUnresolved behält deen Hostnumm fir den SOCKS-Pad, amplaz en direkt um Client opzeléisen.
De geschichten createSocket kritt d'Identitéit vum Zil. setEndpointIdentificationAlgorithm("HTTPS") freet ausdrécklech seng Hostnummpréifungen un. D'Vertrauen an d'Zertifikatskette vun engem rohe SSLSocket beweist net vu sech aus, datt d'Hostnummverifikatioun aktivéiert ass. Den Numm vum Proxy oder Loopback ersetzen, fir eng Ongereimtheet ze ënnerdrécken, kann den falschen Endpunkt authentifizéieren.
Halt Vertrauen a Botzen bei hire Phase
D'Standardfabrik benotzt déi konfiguréiert Vertrauensordnung vun der JVM. Eng Applikatioun mat private Fuerderunge kann amplaz hir richteg initialiséiert SSLContext-Fabrik benotzen. Dee Choix ass getrennt vum SOCKS-Trajet; en Trauensmanager, deen all Zertifikat akzeptéiert, reparéiert keen falschen Peer-Numm.
Eng SOCKS-Ablehnung geschitt virun TLS; en net vertrauenswierdegt Zertifikat oder e falschen Hostnumm feelt wärend TLS; duerno kann en HTTP-Feeler kommen. D'Proxy-Amelung autoriséiert d'Tunnel-Ufro, amplaz d'Websäit dobannen z'authentifizéieren.
D'Schléissen vum geschichte Socket mat aktivéiertem automatesche Schléissen schléisst säin Transport. Den äussere Ressourceberäich schléisst deen Transport och, wann d'Ëmhüllung oder den Handshake virun der normaler Fäerdegstellung feelt.