在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}
]
}
}