繁体   English   中英

如何使用密钥库在带有 java 的 grpc 中启用 ssl

[英]How to enable ssl in grpc with java using keystore

使用 java 的 gRPC 新手,我无法找到在使用信任库和客户端库时启用 ssl 的方法。 我已经能够通过指向单个证书但不使用信任库来启用 ssl。 任何线索都会非常有帮助。

您只需要将 CA 证书(信任库)的KeyStore转换为TrustManagerFactory并将客户端证书/密钥(clientstore)的KeyStore转换为KeyManagerFactory

前者可以用

TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm();
tmf.init(truststore);

后者可以用

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientstore, password);

然后,如果您使用的是SslContext传输,则可以使用

SslContext sslContext = GrpcSslContexts.forClient().trustManager(tmf).keyManager(kmf).build();

请参阅其SslContextBuilder Javadoc

最后,构建 gRPC 通道

NettyChannelBuilder.forAddress(host, port).sslContext(sslContext).build();

如果您使用的是 Okhttp 传输,则需要构建SSLSocketFactory

SSLContext context = SSLContext.getInstance("TLS");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
SSLSocketFactory sslSocketFactory = context. getSocketFactory()

并构建 gRPC 通道

OkHttpChannelBuilder.forAddress(host, port).sslSocketFactory(sslSocketFactory).build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM