我得到以下例外。
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:
我以下面两种方式安装了证书。
但仍然从我的应用程序中获得上述SSL握手异常。
我还需要为tomcat添加什么吗?
请帮帮我。过去两天我们正在研究这个问题。 提前谢谢。
谢谢, 戒。
答案 0 :(得分:0)
检查证书是否在“管理受信任的根证书”中。如果单击证书并说不安全,则需要添加到“管理受信任的根证书”中。
然后,如果您正在使用Eclipse或类似的工作,您需要将jsscacert文件(由installCert.java制作)放入%JAVA_HOME%\ jdk_version \ jre \ lib \ security并将其添加到eclipse的路径中
-Djavax.net.ssl.trustStore = “PATH_TO_jssecacerts”
答案 1 :(得分:-1)
以下是从帖子Using a custom truststore in java as well as the default one中获取的代码段 我刚刚删除了另外一个您可以添加的信任管理器,如果您想使用自己的信任库
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
// Using null here initialises the TMF with the default trust store.
tmf.init((KeyStore) null);
// Get hold of the default trust manager
X509TrustManager defaultTm = null;
for (TrustManager tm : tmf.getTrustManagers()) {
if (tm instanceof X509TrustManager) {
defaultTm = (X509TrustManager) tm;
break;
}
}
//
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { defaultTm }, null);
// You don't have to set this as the default context,
// it depends on the library you're using.
SSLContext.setDefault(sslContext);
// Not sure that you need this but add it
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
.getSocketFactory());
您必须与此连接,否则您的默认信任库不包含服务器证书,因此您可以创建自己的证书并加载它。看到我提供的帖子。
您可以通过调用X509TrustManager“customTm”的函数getAcceptedIssuers()来检查服务器证书是否被接受
祝你好运