Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带证书的Https_Java_Https - Fatal编程技术网

Java 带证书的Https

Java 带证书的Https,java,https,Java,Https,我无法使用以下代码调用https URL: try (CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(getRequestConfig()) .setSSLSocketFactory(SSLConnectionSocketFactory.getSystemSocketFactory()) .setDefaultCredentialsProvider(cred

我无法使用以下代码调用https URL:

try (CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(getRequestConfig())
        .setSSLSocketFactory(SSLConnectionSocketFactory.getSystemSocketFactory())
        .setDefaultCredentialsProvider(credsProvider).setRoutePlanner(getRoutePlanner()).build()) {
...
...
我得到:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我已经在我的jre和重启服务器的cacert中添加了证书,但我的客户端已经显示了此消息,我可以检查什么?日志查看客户端是否使用我的cacert文件

编辑1 在ssl通信过程中,我在末尾看到了这一点:

Invalidated:  [Session-17, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]
http-nio-8080-exec-10, SEND TLSv1.2 ALERT:  fatal, description = certificate_unknown
http-nio-8080-exec-10, WRITE: TLSv1.2 Alert, length = 2
在此之前,我可以在日志中看到我的证书


谢谢

PKIX路径构建失败意味着您使用HTTP客户端成功访问了您尝试调用的服务器,服务器正在发回自己的证书,在客户端验证过程中,验证失败,因为它仍然不信任它。您提到您已经在cacerts(信任库)中导入了它,但请确保在该机器上有多个java版本的情况下,您将其导入了正确的机器。检查您的客户端使用的确切jdk,并重新检查cacerts,确保您需要信任的证书在那里。您如何运行应用程序?是通过IDE吗?通过Maven?格拉德尔?插件?纯java从终端?@SofoGial-its-throughtomcat@IoanM:在启动java#u home时,我会按此路径在jre/lib/security/cacerts中将带有keytool的证书添加到cacert,请参见我的编辑#1PKIX路径构建失败意味着使用HTTP客户端,您成功访问了尝试调用的服务器,服务器正在发回自己的证书,在客户端的验证过程中,验证失败,因为它仍然不信任它。您提到您已经在cacerts(信任库)中导入了它,但请确保在该机器上有多个java版本的情况下,您将其导入了正确的机器。检查您的客户端使用的确切jdk,并重新检查cacerts,确保您需要信任的证书在那里。您如何运行应用程序?是通过IDE吗?通过Maven?格拉德尔?插件?纯java从终端?@SofoGial-its-throughtomcat@IoanM:在显示启动java#U home时,我按此路径将带有keytool的证书添加到jre/lib/security/cacerts中的cacert,请参见我的编辑#1