検証済みの SSL 証明書を Java アプリに追加しようとしています。Java アプリは変換サービスとして機能します。特定の URL のポートでリッスンします。文字列の検索と置換により、リクエストのボディを変換します。その後、Java アプリはデータを内部サービスに変換する POST を実行しました。
アプリに自己署名 SSL 証明書を追加しました。ただし、これはあまりうまく機能しません。SoapUI では正常に動作します。basicHttpBinding と HttpWebRequest を使用して C# アプリケーションから呼び出そうとすると、次のエラーが発生します。
Unhandled Exception: System.Net.WebException:
The underlying connection was closed:
Could not establish trust relationship for the SSL/TLS secure channel. --->
System.Security.Authentication.AuthenticationException: The remote certificate
is invalid according to the validation procedure.
そのため、その証明書を削除し、署名付き証明書を追加しました。この証明書は現在、Java アプリがリッスンしているドメインに接続されています。Java アプリを実行しようとすると、次の例外が発生します。
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing
implementation (algorithm: Default, provider: SunJSSE, class:
com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
キーとトラスト ストアを設定する Java コード:
loadConfig();
loadTransforms();
// Set Trust/Key stores
System.setProperty("javax.net.ssl.keyStore", keyFile);
System.setProperty("javax.net.ssl.keyStorePassword", keyPassword);
System.setProperty("javax.net.ssl.trustStore", keyFile);
System.setProperty("javax.net.ssl.trustStorePassword", keyPassword);
TransformationServer server = new TransformationServer();
server.runServer(mode);
証明書は、キー ストアとトラスト ストア内に格納されます。誰にもアイデアはありますか?