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

PKIX error while receiving server certificate by InstallCert.java

我正在尝试使用 installCert.java

获取服务器 ssl 证书

在link下方

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 class 来获取证书文件。

我也在 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 根是服务器证书或中间实体(如果存在)的颁发者