java - 通过 InstallCert.java 接收服务器证书时出现 PKIX 错误

标签 java ssl x509certificate

我正在尝试使用 installCert.java 获取服务器 ssl 证书

在下面的链接中

https://github.com/escline/InstallCert/blob/master/InstallCert.java

我可以为某些服务器获取服务器证书,但在尝试获取某些服务器证书时出现以下错误

javax.net.ssl.SSLHandshakeException:

sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:

我搜索了一下,但每个人都说你应该将你的证书文件输入到 java cacerts,但我使用这个 java 类来获取证书文件。

此外,我在 socket.startHandshake();

处收到错误
    System.out.println("Opening connection to " + host + ":" + port + "...");
    SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
    socket.setSoTimeout(10000);
    try {
        System.out.println("Starting SSL handshake...");
        socket.startHandshake();
        socket.close();
        System.out.println();
        System.out.println("No errors, certificate is already trusted");
    } catch (SSLException e) {

最佳答案

该错误表示您的 JVM 不信任服务器证书

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

您需要在 JVM 的信任库中手动包含 CA 根证书,默认情况下是 cacerts 文件。 CA 根是服务器证书或中间实体(如果存在)的颁发者

关于java - 通过 InstallCert.java 接收服务器证书时出现 PKIX 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074723/

相关文章:

java - RestTemplate postforobject 在尝试发布到自定义对象时会导致错误

java - 为什么我可以将 int 数据类型中的十进制数字添加到字符串中,而无需进行数据类型转换

c# - 带有 ssl 的 asp.net 表单 - 拒绝访问日志文件

iis - ssl 证书链

java - 将数据添加到异常

java - 上次运行的 tomcat 类仍然存在

java - 访问已安装认证签名

c# - BTS 2013 - 消息的消息签名错误

ssl - IBM MQ 和 Weblogic JMS 之间的连接认证

ssl - Kubernetes Ingress SSL 证书问题