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