如何解决如何使用密钥库在Java的grpc中启用SSL
使用Java的gRPC的新增功能,我无法找到一种使用truststore和clientstore时如何启用ssl的方法。我已经能够通过指向单个证书而不使用信任库来启用ssl。任何线索都会非常有帮助。
解决方法
您只需要将CA证书(信任库)的KeyStore
转换为TrustManagerFactory
,并将客户端证书/密钥(客户存储)的KeyStore
转换为KeyManagerFactory
。
前者可以做到
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm();
tmf.init(truststore);
而后者可以通过
完成KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientstore,password);
然后,如果您使用Netty传输,则可以使用{p>
SslContext
请参见其SslContext sslContext = GrpcSslContexts.forClient().trustManager(tmf).keyManager(kmf).build();
Javadoc。
最后,使用以下方式构建gRPC频道
SslContextBuilder
如果您使用Okhttp传输,则需要使用{p>
NettyChannelBuilder.forAddress(host,port).sslContext(sslContext).build();
并使用
构建gRPC频道SSLSocketFactory
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。