如何解决使用SslContextBuilder的gRPC SSL连接-SunCertPathBuilderException
我有一个Java(春季启动)应用程序,它使用TLS通过gRPC调用(Dgraph)数据库。
我有以下代码在我的产品(docker,k8s)环境中成功建立SSL连接。我还通过“直接”运行客户端代码(即从IDE运行main方法)并将该服务作为容器在本地成功运行。
SslContextBuilder builder = GrpcSslContexts.forClient();
builder.trustManager(getCertFile("ca.crt",dgraphCaCert));
// Performing client verification
builder.keyManager(
getCertFile("client.testing.crt",dgraphClientCert),getCertFile("client.testing.java.key",dgrapghClientKey));
SslContext sslContext = builder.build();
log.info("dgraphHost {} dgraphPort {}",dgraphHost,dgraphPort);
managedChannel =
NettyChannelBuilder.forAddress(dgraphHost,dgraphPort).sslContext(sslContext).build();
一切都很好。但是,当我在本地将应用作为容器运行时,出现错误:
certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
有什么提示吗? 研究中,我认为这是一个足够普遍的问题,解决方案是将证书添加到客户端的密钥库中。但是,这使我感到困惑,就像在prod中工作时一样,或者当我直接运行所有文件时-并假设这是SslContextBuilder的目的,即不让应用程序/ env“手动”添加证书。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。