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 ભૂલ આવી શકે છે. પ્રોક્સી લોગિન ટનલ વિનંતીને અધિકૃત કરે છે, અંદરની વેબસાઇટને પ્રમાણિત કરતું નથી.

સ્વયં-બંધ સક્ષમ સાથે સ્તરિત સોકેટ બંધ કરવાથી તેનું પરિવહન બંધ થાય છે. બાહ્ય સંસાધન ક્ષેત્ર પણ તે પરિવહન બંધ કરે છે જો સામાન્ય પૂર્ણતા પહેલાં વીંટવું કે હેન્ડશેક નિષ્ફળ જાય.

સંબંધિત લેખો