打印服务器证书详细信息时出现异常

Ash*_*win 5 java ssl https certificate

我在服务器和客户端之间建立了一个https连接,其中客户端是一个java程序,服务器是一个servlet.我使用以下代码从服务器打印证书详细信息.

URL url = new URL("https://localhost:8443/cert");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(sslsocketfactory);

connection.setDoOutput(true);
if(connection!=null){
    Certificate[] certs = connection.getServerCertificates();// #1 

    System.out.println("Cert Type : " + certs[0].getType());
    System.out.println("Cert Hash Code : " + certs[0].hashCode());
    System.out.println("Cert Public Key Algorithm : " + certs[0].getPublicKey().getAlgorithm());
    System.out.println("Cert Public Key Format : " + certs[0].getPublicKey().getFormat());
    System.out.println("\n");
}
Run Code Online (Sandbox Code Playgroud)

但我得到以下例外.

java.lang.IllegalStateException: connection not yet open
Run Code Online (Sandbox Code Playgroud)

我认为握手应该在调用theurl.openconnection()方法时立即进行.这里有什么问题?
异常抛出行号'#1'(参见上面代码中的注释)

Pet*_*esh 3

您正在尝试连接到自签名证书主机。按照此答案中答案的选项 2 的说明进行操作,这应该允许您进行连接。

connection.setDoOutput()用 a替换了connection.connect(),代码对我来说工作正常。

不要将此机制用于测试以外的任何用途 - 您应该使用有效签名的证书