问题描述
我有一个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 (将#修改为@)