ប្រើអត្តសញ្ញាណគោលដៅសម្រាប់ Java TLS តាម SOCKS
ភ្ជាប់តាម SOCKS ជាមុន បន្ទាប់មកដាក់ស្រទាប់ SSLSocket ជាមួយឈ្មោះម៉ាស៊ីនរបស់គេហទំព័រ និងការត្រួតពិនិត្យ HTTPS ច្បាស់លាស់។
ចំណុចបញ្ចប់ SOCKS នាំអ្នកទៅគេហទំព័រ។ ដៃគូ TLS នៅក្នុងការតភ្ជាប់នោះគឺគេហទំព័រខ្លួនឯង ដូច្នេះបញ្ជូនឈ្មោះម៉ាស៊ីនគោលដៅទៅឱ្យរោងចក្រ socket ដែលដាក់ស្រទាប់៖
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 networking និង TLS ស្តង់ដារ ការកំណត់ទុកចិត្តលំនាំដើមដែលមានស្រាប់ និងការតភ្ជាប់ SOCKS ដែលមិនត្រូវការព័ត៌មានសម្គាល់ប្រូកស៊ី។ វាធ្វើការចាប់ដៃ។ កម្មវិធីនៅតែត្រូវផ្ញើសំណើ HTTP ក្នុងទម្រង់ដែលម៉ាស៊ីនមេរំពឹង។ សម្រាប់គោលដៅ HTTPS សាធារណៈនៅលើផ្លូវសាធារណៈដែលបានអនុញ្ញាត បញ្ជីប្រូកស៊ី SOCKS ផ្តល់ចំណុចបញ្ចប់បេក្ខជន។ ផ្គូផ្គងកំណែម៉ាស៊ីនមេ និងការគាំទ្រឈ្មោះម៉ាស៊ីនជាមួយផ្លូវ socket Java នេះ។
អានអត្តសញ្ញាណទាំងពីរក្នុងឧទាហរណ៍
127.0.0.1:1080 គឺជាចំណុចបញ្ចប់ប្រូកស៊ី ដែលអាចឈានដល់ពីដំណើរការ Java នេះ។ destination និង destinationPort កំណត់អត្តសញ្ញាណគេហទំព័រ។ createUnresolved រក្សាឈ្មោះម៉ាស៊ីននោះសម្រាប់ផ្លូវ SOCKS ជំនួសឱ្យការដោះស្រាយវាមុននៅលើអតិថិជន។
createSocket ដែលដាក់ស្រទាប់ទទួលអត្តសញ្ញាណគោលដៅ។ setEndpointIdentificationAlgorithm("HTTPS") ស្នើសុំការត្រួតពិនិត្យឈ្មោះម៉ាស៊ីនរបស់វាយ៉ាងច្បាស់។ ការទុកចិត្តខ្សែសង្វាក់វិញ្ញាបនបត្រនៃ SSLSocket ដើមមិនបញ្ជាក់ដោយខ្លួនឯងថាការផ្ទៀងផ្ទាត់ឈ្មោះម៉ាស៊ីនបានបើក។ ការជំនួសឈ្មោះប្រូកស៊ី ឬ loopback ដើម្បីបង្ក្រាបភាពមិនស៊ីគ្នាអាចផ្ទៀងផ្ទាត់ចំណុចបញ្ចប់ខុស។
រក្សាការទុកចិត្ត និងការសម្អាតជាមួយដំណាក់កាលរបស់វា
រោងចក្រលំនាំដើមប្រើការរៀបចំទុកចិត្តដែលបានកំណត់របស់ JVM។ កម្មវិធីដែលមានតម្រូវការឯកជនអាចប្រើរោងចក្រ SSLContext ដែលបានចាប់ផ្តើមត្រឹមត្រូវជំនួសវិញ។ ជម្រើសនោះដាច់ដោយឡែកពីផ្លូវ SOCKS។ អ្នកគ្រប់គ្រងការទុកចិត្តដែលទទួលយកវិញ្ញាបនបត្រទាំងអស់មិនជួសជុលឈ្មោះដៃគូខុសទេ។
ការបដិសេធ SOCKS កើតឡើងមុន TLS។ វិញ្ញាបនបត្រដែលមិនគួរទុកចិត្ត ឬឈ្មោះម៉ាស៊ីនខុសបរាជ័យកំឡុង TLS។ កំហុស HTTP អាចកើតឡើងបន្ទាប់ពីនោះ។ ការចូលប្រូកស៊ីអនុញ្ញាតសំណើផ្លូវរូង មិនមែនផ្ទៀងផ្ទាត់គេហទំព័រនៅខាងក្នុងទេ។
ការបិទ socket ដែលដាក់ស្រទាប់ ដោយបើកការបិទស្វ័យប្រវត្តិ បិទការដឹកជញ្ជូនរបស់វា។ វិសាលភាពធនធានខាងក្រៅក៏បិទការដឹកជញ្ជូននោះដែរ ប្រសិនបើការរុំ ឬការចាប់ដៃបរាជ័យមុនការបញ្ចប់ធម្មតា។