无法从站点服务器证书(Can't get server certificate from s

2019-06-24 12:58发布

我无法从我的网站证书(没有其他网站)。 我试着用一些解决方案HttpsURLConnection和方法getServerCertificates ,但没有解决问题。

 URL httpsURL = new URL("https://www.google.com.br/");
 HttpsURLConnection connection = (HttpsURLConnection)httpsURL.openConnection();
 Certificate[] certs = connection.getServerCertificates(); 

我得到一个异常说“getServerCertificates解决不了。”

我不认为有必要使用密钥库的,是?

Answer 1:

我得到一个异常说getServerCertificates解决不了..

真奇怪。 你确定你使用了正确的类? 如果我运行这段代码:

import java.io.IOException;
import java.net.URL;
import java.security.cert.Certificate;

import javax.net.ssl.HttpsURLConnection;

public class Test {
    public static void main(String[] args) throws IOException {
        URL httpsURL = new URL("https://www.google.com.br/");
        HttpsURLConnection connection = (HttpsURLConnection) httpsURL.openConnection();
        connection.connect();
        Certificate[] certs = connection.getServerCertificates();
        for (Certificate cer : certs) {
            System.out.println(cer.getPublicKey());
        }
    }
}

我得到这样一个结果:

Sun RSA public key, 1024 bits
  modulus: 13069990984429476578...
  public exponent: 65537
Sun RSA public key, 1024 bits
  modulus: 14179907349200548596...
  public exponent: 65537

验证您所使用的SSL套接字工厂,也许有什么不妥。 此添加到您的代码,看看它从什么样的结果(作为一个例子,对我来说是com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl ):

System.out.println(connection.getSSLSocketFactory().getClass());
System.out.println(connection.getDefaultSSLSocketFactory().getClass());


文章来源: Can't get server certificate from site