![](/img/trans.png)
[英]How to instantiate a grpc server using ssl in java using java keystore instead of certficate and key file?
[英]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.