我正在尝试将经过验证的 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);
证书存储在密钥和信任库中。有没有人有任何想法?