Defnyddiwch hunaniaeth y cyrchfan ar gyfer Java TLS dros SOCKS
Cysylltwch drwy SOCKS yn gyntaf, yna haenwch SSLSocket gydag enw gwesteiwr y wefan a gwiriadau penbwynt HTTPS penodol.
Mae penbwynt SOCKS yn eich cael i'r wefan. Y cymar TLS yn y cysylltiad hwnnw yw'r wefan ei hun, felly trosglwyddwch enw gwesteiwr y cyrchfan i'r ffatri soced haenog:
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.
}
}Mae'r darn yn cymryd yn ganiataol fewnforion Java networking a TLS safonol, cyfluniad ymddiriedaeth rhagosodedig sy'n bodoli eisoes a chysylltiad SOCKS nad oes angen manylion proxy arno. Mae'n perfformio'r ysgwyd llaw; mae angen i'r cymhwysiad o hyd anfon cais HTTP yn y fformat a ddisgwylir gan y gweinydd. Ar gyfer targedau HTTPS cyhoeddus ar lwybrau cyhoeddus a ganiateir, mae'r rhestr dirprwyon SOCKS yn cynnig penbwyntiau posibl; parwch fersiwn y gweinydd a chefnogaeth enw gwesteiwr â'r llwybr soced Java hwn.
Darllenwch y ddau hunaniaeth yn yr enghraifft
127.0.0.1:1080 yw penbwynt y dirprwy, y gellir ei gyrraedd o'r broses Java hon. destination a destinationPort sy'n nodi'r wefan. Mae createUnresolved yn cadw'r enw gwesteiwr hwnnw ar gyfer llwybr SOCKS yn hytrach na'i ddatrys yn barod ar y cleient.
Mae'r createSocket haenog yn derbyn hunaniaeth y cyrchfan. Mae setEndpointIdentificationAlgorithm("HTTPS") yn gofyn yn benodol am ei wiriadau enw gwesteiwr. Nid yw ymddiriedaeth cadwyn ardystiadau SSLSocket crai ynddi'i hun yn profi bod dilysu enw gwesteiwr wedi'i alluogi. Gall disodli enw'r dirprwy neu loopback i atal anghydweddiad ddilysu'r penbwynt anghywir.
Cadwch ymddiriedaeth a glanhau gyda'u camau
Mae'r ffatri ragosodedig yn defnyddio trefniant ymddiriedaeth cyfluniedig y JVM. Gall cymhwysiad â gofynion preifat ddefnyddio ei ffatri SSLContext a gychwynnwyd yn briodol yn lle hynny. Mae'r dewis hwnnw ar wahân i lwybr SOCKS; nid yw rheolwr ymddiriedaeth sy'n derbyn pob tystysgrif yn trwsio enw cymar anghywir.
Mae gwrthodiad SOCKS yn digwydd cyn TLS; mae tystysgrif anniogel neu enw gwesteiwr anghywir yn methu yn ystod TLS; gall gwall HTTP ddilyn wedyn. Mae mewngofnodi i'r dirprwy yn awdurdodi'r cais twnnel yn hytrach nag ardystio'r wefan sydd y tu mewn iddo.
Mae cau'r soced haenog gyda hunangau yn galluogi yn cau ei gludydd. Mae cwmpas yr adnodd allanol hefyd yn cau'r cludydd hwnnw os yw'r lapio neu'r ysgwyd llaw yn methu cyn cwblhau arferol.