SSL を使用して Web サービスを呼び出そうとしています。関連するサーバー証明書を取得してトラストストアにインポートするにはどうすればよいですか? メイン メソッドからプロパティ com.ibm.ssl.enableSignerExchangePrompt を使用することは知っていますが、サーバー証明書をトラストストアに手動で追加します。
このプロパティをどのサーブレットにも設定したくない
どんな助けでも大歓迎ですありがとうダミアン
SSL を使用して Web サービスを呼び出そうとしています。関連するサーバー証明書を取得してトラストストアにインポートするにはどうすればよいですか? メイン メソッドからプロパティ com.ibm.ssl.enableSignerExchangePrompt を使用することは知っていますが、サーバー証明書をトラストストアに手動で追加します。
このプロパティをどのサーブレットにも設定したくない
どんな助けでも大歓迎ですありがとうダミアン
独自の 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();
Web ブラウザーでサイトを参照すると、小さな南京錠のアイコンをクリックしてセキュリティ情報を確認でき、ポップアップするダイアログで証明書を保存できます。
Chrome の手順