0

SSL を使用して Web サービスを呼び出そうとしています。関連するサーバー証明書を取得してトラストストアにインポートするにはどうすればよいですか? メイン メソッドからプロパティ com.ibm.ssl.enableSignerExchangePrompt を使用することは知っていますが、サーバー証明書をトラストストアに手動で追加します。

このプロパティをどのサーブレットにも設定したくない

どんな助けでも大歓迎ですありがとうダミアン

4

2 に答える 2

2

独自の X509TrustManager を実装することにより、Java を使用してプログラムでこれを行うことができます。


public class dummyTrustManager implements X509TrustManager {

        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            //do nothing
        }

        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            // do nothing
        }

        public X509Certificate[] getAcceptedIssuers() {
            //just return an empty issuer
            return new X509Certificate[0];
        }
    }

次に、このトラスト マネージャーを使用して SSL ソケットを作成できます。


SSLContext context = SSLContext.getInstance("SSL");
context.init(null, new TrustManager[] { new dummyTrustManager() },
                            new java.security.SecureRandom());

SSLSocketFactory factory = context.getSocketFactory();
InetAddress addr = InetAddress.getByName(host_);
SSLSocket sock =  (SSLSocket)factory.createSocket(addr, port_);

次に、そのソケットを使用して、サーバー証明書を抽出するだけです (信頼できるキーストアにインポートしてインポートします)。


SSLSession session = sock.getSession();
Certificate[] certchain = session.getPeerCertificates();
于 2008-09-28T19:39:41.750 に答える
0

Web ブラウザーでサイトを参照すると、小さな南京錠のアイコンをクリックしてセキュリティ情報を確認でき、ポップアップするダイアログで証明書を保存できます。

Chrome の手順

  1. 南京錠をクリックします(アドレスバーにあります)
  2. 「証明書情報」をクリック
  3. [詳細] タブで、[ファイルにコピー...] を選択できます。
于 2008-09-28T18:35:54.570 に答える