NewRelic java代理无法识别.jks信任存储



我们使用NewRelic java代理来监控java应用程序。该应用程序使用一个扩展名为.jks的自定义信任存储。但是,默认情况下或通过显式指定信任存储的路径,代理不会识别信任存储并引发错误。

我们如何在不更改扩展的情况下使用这个信任存储,因为我们需要按原样使用。

信息:使用ca_bundle_path:D: \Java\jdk1.8.0_311\jre\lib\security\cacerts2022-01-24T16:55:40590+0530[7048 1]com.newreli错误:无法生成ca_bundle_path证书。验证证书格式。不会处理进一步的证书。java.security.cert.CertificateException:无法分析证书:java.io.IOException:空输入

Java代理依赖于默认的X.509 CertificateFactory,该工厂只接受.pem文件。

相关线路:

try (InputStream is = new BufferedInputStream(new FileInputStream(caBundlePath))) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// ...
caCerts.add((X509Certificate) cf.generateCertificate(is));
// ...
}

https://github.com/newrelic/newrelic-java-agent/blob/f18215d145bd6992c0fe74a8c503459799e108ca/newrelic-agent/src/main/java/com/newrelic/agent/transport/apache/ApacheSSLManager.java#L54-L58

如果您可以为接受.pks文件的X.509 CertificateFactory覆盖SPI,那么您可能可以使用您的文件。

最新更新