我已经成功地构建并运行了一个代码片段,可以使用Java将文档上传到google云存储。在将Google集成到我们的项目中时,我们引入了keystore和信任库params。在引入存储params之后,上传文档API出现了与证书相关的错误。
2017年12月26日4:00:46 PM com.google.api.client.http.HttpRequest执行警告:执行请求时引发的异常javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX路径构建失败:com.google.api.client.http.HttpRequest无法找到被请求目标的有效证书路径 由: com.google.cloud.storage.StorageException:错误获取服务帐户的访问令牌引起:
如果我们删除javax ssl params,代码就会像预期的那样工作,是不是因为云存储Api使用了云sql ssl证书来连接到存储?如果是这样的话,是否有一种方法可以跳过云存储API中证书的检查?或者,解决这个问题的最好方法是什么?
发布于 2018-02-02 00:49:59
是的,我们有一个非常类似的复杂问题,结果是MacAfee网络网关(MWG)代理配置导致了这个问题。我们注意到SSL证书验证的一种奇怪行为,它从一个进程工作,并从另一个进程产生错误。它可以直接从命令行Java执行,但当我们在容器中运行相同的代码时,会出现一个错误。我们从accounts.google.com和*.googleapsi.com进口了所有的证书。我们不太清楚该怎么做。
它看起来,MacAfee网络网关(MWG)代理白名单配置是基于客户端进程(exe或脚本)的名称。MWG默认配置为白色列表,用于Java.exe进程的所有HTTPS URL,但不用于其他进程(exe)名称,如容器(odi.exe)。由于这一设置在MacAfee网络网关代理中,命令行Java代码成功运行,来自容器的相同代码出现错误。我们还注意到,如果存在针对HTTPS URL的代理颁发的SSL证书,则SSL证书验证工作正常。
https://stackoverflow.com/questions/47987417
复制相似问题