windows10 java1.8 unable to find valid certification path to requested target
时间: 2024-05-22 19:09:23 浏览: 40
这个问题通常出现在使用Java程序连接到一个HTTPS站点时。原因是Java的默认信任库中没有站点的证书。
解决方法如下:
1. 将站点的证书导入到Java的信任库中。
2. 禁用SSL证书验证。
如果您选择第一种方法,可以按照以下步骤操作:
1. 下载站点证书,保存为cer格式。
2. 使用keytool工具导入证书到Java的信任库中。命令如下:
keytool -import -alias certAlias -keystore cacerts -file certFile.cer
这里,certAlias是自定义的别名,certFile.cer是下载的证书文件名。
3. 在运行Java程序时,指定Java的信任库位置。命令如下:
java -Djavax.net.ssl.trustStore=trustStoreFile -Djavax.net.ssl.trustStorePassword=trustStorePassword MainClass
如果您选择第二种方法,可以按照以下步骤操作:
1. 在Java代码中禁用SSL证书验证。代码如下:
HttpsURLConnection.setDefaultHostnameVerifier((hostname, sslSession) -> true);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{new X509TrustManager(){
public X509Certificate[] getAcceptedIssuers(){ return null; }
public void checkClientTrusted(X509Certificate[] certs, String authType){}
public void checkServerTrusted(X509Certificate[] certs, String authType){}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
阅读全文