Web サイトとの SSL ハンドシェイクを作成しようとする Java コードがあります。Web サイトの SSL 証明書が自己署名されているか、安全でないオプションを使用している場合、エラーが発生し、コードで証明書を抽出できません。
SSLSocket socket=null;
SSLSocketFactory factory=null;
factory = HttpsURLConnection.getDefaultSSLSocketFactory();
try{
socket = (SSLSocket) factory.createSocket(host, port);
System.out.println("listen on port "+port+" for host "+host);
} //end try
catch (IOException ex)
{
//remote host is not listening on port 443
System.out.println("Can not listen on port "+port+" of host"+host);
} //end catch
System.out.println("Creating a SSL Socket For "+host+" on port "+port);
SSLSession ss = socket.getSession();
socket.startHandshake(); // start the handshake
System.out.println("Handshake Done");
例として、次のエラーが表示されます。
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Insecure renegotiation is not allowed
自己署名および弱い ssl 構成での完全なハンドシェイクを Java コードが受け入れるようにするにはどうすればよいですか?