ניצט די אידענטיטעט פונעם ציל פאר Java TLS איבער SOCKS
פארבינד זיך ערשט דורך SOCKS, דערנאך לייג א SSLSocket מיטן האסט־נאמען פונעם וועבזייטל און קלארע HTTPS־פרופונגען.
דער SOCKS־ענדפונקט ברענגט דיך צום וועבזייטל. דער TLS־פּארטנער אין יענער פארבינדונג איז דאס וועבזייטל אליין, דעריבער גיב איבער דעם האסט־נאמען פונעם ציל צו דער געשיכטעטער סאקעט־פאבריק:
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.
}
}דאס שטיקל פארלאנגט סטאנדארד Java נעצווערק און TLS אימפארטן, אן עקזיסטירנדיקער פעלנדיקער צוטרוי־קאנפיגוראציע און א SOCKS־פארבינדונג אן פּראקסי־צערטיפיקאטן. עס פירט אויס דעם האנטשעיק; די אפליקאציע דארף נאך אלץ שיקן אן HTTP־בקשה אין דעם פורמאט וואס דער סערווער דערווארט. פאר עפנטלעכע HTTPS־צילן אויף ערלויבטע עפנטלעכע וועגן פארשלאגט די SOCKS־פּראקסי־ליסטע קאנדידאט־ענדפונקטן; שטעל אפ די ווערסיע פונעם סערווער און האסט־נאמען־שטיצע צו דעם Java־סאקעט־וועג.
לייען די צוויי אידענטיטעטן אין ביישפיל
127.0.0.1:1080 איז דער פּראקסי־ענדפונקט, דערגרייכבאר פון דעם Java־פראצעס. destination און destinationPort אידענטיפיצירן דאס וועבזייטל. createUnresolved האלט דעם האסט־נאמען פארן SOCKS־וועג אנשטאט אים פרי צו לייזן ביים קליענט.
דער געשיכטעטער createSocket באקומט די אידענטיטעט פונעם ציל. setEndpointIdentificationAlgorithm("HTTPS") פארלאנגט קלאר זיינע האסט־נאמען־פרופונגען. דאס צוטרוי צו דער צערטיפיקאט־קייט פון א רויער SSLSocket באווייזט נישט פון זיך אליין אז די האסט־נאמען־פארמיטלונג איז אנגעצונדן. איבערבײַטן דעם פּראקסי־נאמען אדער loopback צו אונטערדרוקן אן אומפאסונג קען באשטעטיקן דעם אומריכטיקן ענדפונקט.
האלט צוטרוי און רייניקונג ביי זייערע שטאפלען
די פעלנדיקע פאבריק ניצט די קאנפיגורירטע צוטרוי־ארדנונג פונעם JVM. אן אפליקאציע מיט פּריוואטע פארלאנגען קען אנשטאט ניצן איר ריכטיק איניציאליזירטע SSLContext־פאבריק. יענער אויסוואל איז אפגעזונדערט פונעם SOCKS־וועג; א צוטרוי־פארוואלטער וואס נעמט אן יעדעס צערטיפיקאט פארריכט נישט קיין אומריכטיקן פּארטנער־נאמען.
אן אפזאג פון SOCKS פאסירט פאר TLS; אן אומצוטרוייק צערטיפיקאט אדער אן אומריכטיקער האסט־נאמען דורכפאלט בעת TLS; דערנאך קען קומען אן HTTP־פעלער. אריינלאגירן אין פּראקסי דערלויבט די טונעל־בקשה, נישט באשטעטיקן דאס וועבזייטל דערינען.
פארמאכן דעם געשיכטעטן סאקעט מיט אויטאמאטישער פארמאכונג אנגעצונדן פארמאכט זיין טראנספּארט. דער דרויסנדיקער רעסורסן־אמפּלאַנג פארמאכט אויך יענעם טראנספּארט אויב דאס איינבינדן אדער דער האנטשעיק דורכפאלט פאר נארמאלער פארענדיקונג.