Мне нужно сделать рукопожатие. Я делаю это с помощью кода ниже.SSLSocketFactory.createSocket подключается с использованием http вместо https
Я запускаю код в апплете, и он отлично работает при прямом запуске сервера. Проблема, которая возникает у меня, возникает, когда один и тот же код работает через прокси. Я смотрю в консоли java с активированным уровнем 5. Непосредственно после строки кода «SSLSocket socket = (SSLSocket) factory.createSocket (« www.theserver.com », 443); Выполняется Эта строка отображается в консоли java console: network: Подключение http://www.theserver.com:443 с прокси = DIRECT ". После этого апплет перестает работать. Я думаю, что это связано с тем, что прокси-сервер не разрешает трафик http на порту 443.
Может ли кто-нибудь сказать мне, почему он подключается с помощью http и что я должен сделать, чтобы подключить его с помощью https?
import javax.net.ssl.HandshakeCompletedEvent;
import javax.net.ssl.HandshakeCompletedListener;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class Handshake
{
class MyHandshakeListener implements HandshakeCompletedListener
{
public void handshakeCompleted(HandshakeCompletedEvent e)
{
System.out.println("Handshake succesful!");
System.out.println("Using cipher suite: " + e.getCipherSuite());
}
}
public void DoHandshake()
{
try
{
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket("www.theserver.com", 443);
String[] suites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(suites);
socket.addHandshakeCompletedListener(new MyHandshakeListener());
socket.startHandshake();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
Я думаю, что я ищу тот же ответ. –