핸드 쉐이크가 필요합니다. 나는 아래의 코드로 그것을한다.SSLSocketFactory.createSocket은 https 대신 http를 사용하여 연결합니다.
애플릿에서 코드를 실행 중이며 서버에 대해 직접 실행하면 올바르게 작동합니다. 내가 가진 문제는 동일한 코드가 프록시를 통해 실행될 때 발생합니다. 추적 레벨 5가 활성화 된 Java 콘솔을 찾고 있습니다. 코드 라인의 직후에 "SSLSocket socket = (SSLSocket) factory.createSocket ("www.theserver.com ", 443);" 실행 됨 이 줄은 자바 콘솔 "네트워크 : http://www.theserver.com:443 with proxy = DIRECT"에 나타납니다. 그 후에 애플릿이 작동을 멈 춥니 다. 나는 프록시가 포트 443에서 http 트래픽을 허용하지 않기 때문이라고 생각합니다.
누구나 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);
}
}
}
나는 동일한 대답을 찾고 있다고 생각한다. –