SOCKS හරහා Java TLS සඳහා ගමනාන්තයේ අනන්යතාව භාවිත කරන්න
මුලින්ම SOCKS හරහා සම්බන්ධ වන්න, පසුව වෙබ් අඩවියේ hostname සහ පැහැදිලි HTTPS අන්ත ලක්ෂ්ය පරීක්ෂණ සමඟ SSLSocket ස්තර කරන්න.
SOCKS අන්ත ලක්ෂ්යය ඔබව වෙබ් අඩවියට ගෙන යයි. එම සම්බන්ධතාවය තුළ ඇති TLS සහකරු වන්නේ වෙබ් අඩවියම ය, එබැවින් ගමනාන්තයේ hostname ස්තරිත සොකට් කර්මාන්තශාලාවට ලබා දෙන්න:
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 සම්බන්ධතාවක් උපකල්පනය කරයි. එය handshake සිදු කරයි; යෙදුම තවමත් සේවාදායකය අපේක්ෂා කරන ආකෘතියෙන් HTTP ඉල්ලීමක් යැවිය යුතුය. අවසර ලත් පොදු මාර්ගවල පොදු HTTPS ඉලක්ක සඳහා SOCKS ප්රොක්සි ලැයිස්තුව අපේක්ෂක අන්ත ලක්ෂ්ය ලබා දෙයි; සේවාදායකයේ අනුවාදය සහ hostname සහාය මෙම Java සොකට් මාර්ගයට ගැළපෙන්න.
උදාහරණයේ ඇති අනන්යතා දෙක කියවන්න
127.0.0.1:1080 ප්රොක්සි අන්ත ලක්ෂ්යයයි, මෙම Java ක්රියාවලියෙන් ළඟා විය හැක. destination සහ destinationPort වෙබ් අඩවිය හඳුනා ගනී. createUnresolved ක්ලායන්ටයේ පෙර විසඳීම වෙනුවට එම hostname SOCKS මාර්ගය සඳහා රඳවා තබා ගනී.
ස්තරිත createSocket ගමනාන්තයේ අනන්යතාව ලබා ගනී. setEndpointIdentificationAlgorithm("HTTPS") එහි hostname පරීක්ෂණ පැහැදිලිව ඉල්ලා සිටී. අමු SSLSocket හි සහතික දාම විශ්වාසය hostname සත්යාපනය සක්රීය බව තමන් විසින්ම ඔප්පු නොකරයි. නොගැළපීම මැඩපැවැත්වීමට ප්රොක්සියේ නම හෝ loopback වෙනස් කිරීම වැරදි අන්ත ලක්ෂ්යය සත්යාපනය කළ හැක.
විශ්වාසය සහ පිරිසිදු කිරීම ඒවායේ අවස්ථා සමඟ තබා ගන්න
පෙරනිමි කර්මාන්තශාලාව JVM හි වින්යාසගත විශ්වාස විධිවිධානය භාවිත කරයි. පෞද්ගලික අවශ්යතා ඇති යෙදුමකට ඒ වෙනුවට එහි නිසි ලෙස ආරම්භ කළ SSLContext කර්මාන්තශාලාව භාවිත කළ හැක. එම තේරීම SOCKS මාර්ගයෙන් වෙන්ව පවතී; සෑම සහතිකයක්ම පිළිගන්නා විශ්වාස කළමනාකරු වැරදි සහකරු නමක් අලුත්වැඩියා නොකරයි.
SOCKS ප්රතික්ෂේපය TLS ට පෙර සිදු වේ; විශ්වාස නොකළ හැකි සහතිකයක් හෝ වැරදි hostname එකක් TLS අතරතුර අසාර්ථක වේ; ඉන්පසු HTTP දෝෂයක් එළඹිය හැක. ප්රොක්සි පිවිසුම උමං ඉල්ලීමට අවසර දෙයි, එහි ඇතුළත වෙබ් අඩවිය සත්යාපනය නොකරයි.
ස්වයංක්රීයව වැසීම සක්රීයව ඇතිව ස්තරිත සොකට් වැසීම එහි ප්රවාහනය වසා දමයි. සාමාන්ය අවසන් වීමට පෙර ඔතන හෝ handshake අසාර්ථක වුවහොත් පිටත සම්පත් විෂය පථය ද එම ප්රවාහනය වසා දමයි.