3
  1. 使用 JKS 文件调用远程 Web 服务的 Java 代码。
  2. 如何使用证书访问授权服务。并添加请定义 java 密钥库。我对这些过程很陌生。尝试与此相关时出现以下错误

    cause javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
    PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
    

我挣扎了最后一个月。请任何人做必要的事情。请原谅我的语法错误。

4

1 回答 1

5

首先,您需要从您尝试连接的服务器获取公共证书。这可以通过多种方式完成,例如联系服务器管理员并请求它,使用 openssl 下载它,或者,如果它是 HTTP 服务器,则使用任何浏览器连接到它,查看页面的安全信息,以及保存证书的副本。(谷歌应该能够准确地告诉你对你的特定浏览器做什么。)

现在您已将证书保存在文件中,您需要将其添加到 JVM 的信任库中。在 JDK 的 $JAVA_HOME/jre/lib/security/ 或 JRE 的 $JAVA_HOME/lib/security 中,有一个名为 cacerts 的文件,它随 Java 一起提供并包含知名认证机构的公共证书。要导入新证书,请以有权写入 cacerts 的用户身份运行 keytool:

keytool -import -file <the cert file> -alias <some meaningful name> -keystore <path to cacerts file>

它很可能会要求您输入密码。java 附带的默认密码是“changeit”。几乎没有人改变它。完成这些相对简单的步骤后,您将可以安全地进行通信,并确保您正在与正确的服务器交谈,并且只与正确的服务器交谈(只要他们不丢失他们的私钥)。

于 2013-05-06T11:20:10.427 回答