统一代理日志中出现以下错误消息
1 | PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target |
原因
这是Java虚拟机报告的常见错误消息。当Java环境没有适当的CA证书路径来验证HTTPS服务器是否为有效网站时,就会发生这种情况。这是一个特定于Java的错误,其他技术不会报告此类错误。
解决方案
创建证书
首先,你需要创建一个证书。要执行此操作,请按照以下步骤操作:
在浏览器中打开URL(即https://www.example.com/、https://saas.whitesourcesoftware.com/)
按F12访问浏览器的开发人员工具
转到“security”选项卡
单击“view certificate”
在“详细信息”窗口中,转到“详细信息”选项卡
单击“导出”

确保文件格式为:
Base64编码ASCII、单个证书(*.pem, *.crt)将文件命名为:
(Windows:“xxx.crt”;Mac OS:“xxx.cer”)
将证书添加到密钥库
注意:
1 | JAVA和/或JDK的位置可能因初始安装位置而异。如果已安装JDK,则JAVA_HOME变量设置为jdk目录,而不是jre。请使用运行“java”命令时访问的相同Java版本。 |
导出证书文件后,打开CMD。
切到
{jre目录}/lib/security目录。确保这是运行“java”命令时访问的相同版本的Java,否则证书将无法识别。例如:D:\JDK\jdk1.8.0_202\jre\lib\security确保cacerts密钥库文件位于此目录中。例如:
D:\JDK\jdk1.8.0_202\jre\lib\security\cacerts
执行以下命令将证书导入cacerts密钥库:
对于Windows:
keytool -import -noprompt -trustcacerts -alias https://xxx -file "D:\xxx.crt" -keystore cacerts
对于Mac OS:
keytool -import -noprompt -trustcacerts -alias https://xxx -file "D:\xxx.cer" keystore cacerts
注意:
1 | 你将被提示提供cacerts密钥库密码,默认密码为'changeit'。 |