编程语言
首页 > 编程语言> > java-为什么httpclient在DO Drop上有不同的行为(与SSL相关)?

java-为什么httpclient在DO Drop上有不同的行为(与SSL相关)?

作者:互联网

在我的Ubuntu(16.04)开发人员上.环境我可以在产品上创建默认的httpclient并将请求发送到https端点(例如Slack).环境(在Ubuntu 14.04中使用DO Drop)我得到这个错误:

sun.security.validator.ValidatorException: PKIX path building failed: 
     sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

编辑:仍然试图弄清楚这一点…我猜想安装Java(Oracle)的DO Drops与Ubuntu桌面映像没有相同的证书.我将Slack证书(使用SO上其他地方提到的InstallCert工具获得了证书)添加到cacerts(并运行update-ca-certificates)无济于事.

解决方法:

您的Java cacerts可能缺少geotrust根目录.

您可以使用keytool查看哪些证书受信任.
例如,对于oracle JVM:

keytool -list -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts

查找具有正确签名的条目,即:

debian:geotrust_global_ca.pem, 18/05/2015, trustedCertEntry, 
Certificate fingerprint (SHA1): DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12

如果您不信任它,则可以安装它,可以从以下位置下载它:
https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.pem

用安装

keytool -import -trustcacerts -file GeoTrust_Global_CA.pem -alias GeoTrust_Global_CA -keystore $JAVA_HOME/jre/lib/security/cacerts

标签:digital-ocean,ssl,ubuntu,apache-httpclient-4-x,java
来源: https://codeday.me/bug/20191111/2019893.html