WSClient and SSL



在Play 2.4.3 Web应用程序中,我需要使用WSClient通过HTTPS调用其他服务。我关注了这篇文章,但出现了错误:

play.api.libs.ws.ssl.CompositeCertificateException: No trust Manager 能够验证此证书链:# 个异常 = 1

CompositeCertificateException里面的异常:

sun.security.validator.ValidatorException: PKIX 路径构建失败: sun.security.provider.certpath.sunCertPathBuilderException: 无法 查找所请求目标的有效证书路径

负责 SSL 的部分application.conf

play.ws.ssl {
  trustManager = {
    stores = [
      { type : "PEM", path : "C:/A/B/globalsign.crt" }
    ]
  }
}

这是怎么回事?

我通过以下步骤解决了这个问题:

  • 运行 InstallCert.java 以生成jssecacerts文件。
  • application.conf 中添加文件的路径。

配置示例:

play.ws.ssl {
  trustManager = {
    stores = [
      {path: "C:/A/B/jssecacerts"}
      {path: ${java.home}/lib/security/cacerts}
    ]
  }
}

最新更新