2

自分の Web サイトから証明書を取得できません (他の Web サイトでもありません)。HttpsURLConnectionとメソッドを使用していくつかの解決策を試しgetServerCertificatesましたが、問題は解決しません。

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

「getServerCertificates を解決できません」という例外が発生します。

キーストアを使用する必要はないと思いますよね??

4

1 に答える 1

2

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());
于 2012-05-19T15:11:59.657 に答える