如何使用 java 中的 ssl 使用 java 密钥库而不是证书和密钥文件实例化 grpc 服务器?
How to instantiate a grpc server using ssl in java using java keystore instead of certficate and key file?
我看过有关如何为客户端执行此操作的示例,但 ServerBuilder class 似乎在配置 ssl 时只获取证书和密钥文件。无论如何我都看不到设置 sslContext 或通道。只有一个 useTransportSecurity(File certChain, File privateKey) 方法需要 certChain 和私钥。我可以通过编程方式从密钥库中提取那些吗?目前我实例化服务器如下:
server = ServerBuilder.forPort(port). useTransportSecurity(certFile, keyFile).addService(this).build().start();
应用程序的其他部分正在使用 jks trust/keystores,我们不希望将密钥存储在两个位置。
正如您已经发现的那样,默认 ServerBuilder
是有限的。我建议使用 NettyServerBuilder
,它能够处理不同类型的输入,例如 KeyStore、KeyManager 等。
将以下依赖项添加到您的项目中:
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
</dependency>
SslContextBuilder sslContextBuilder = SslContextBuilder.forServer(keyManager).trustManager(trustManager);
SslContext sslContext = GrpcSslContexts.configure(sslContextBuilder).build();
Server server = NettyServerBuilder.forPort(8443)
.addService(new HelloServiceImpl())
.sslContext(sslContext)
.build()
.start();
KeyManager/TrustManager可以用工厂构建类:
- KeyManagerFactory
- TrustManagerFactory
另请参阅此处了解其他配置:DZone - Secure Your gRPC Services With SSL/TLS
我看过有关如何为客户端执行此操作的示例,但 ServerBuilder class 似乎在配置 ssl 时只获取证书和密钥文件。无论如何我都看不到设置 sslContext 或通道。只有一个 useTransportSecurity(File certChain, File privateKey) 方法需要 certChain 和私钥。我可以通过编程方式从密钥库中提取那些吗?目前我实例化服务器如下:
server = ServerBuilder.forPort(port). useTransportSecurity(certFile, keyFile).addService(this).build().start();
应用程序的其他部分正在使用 jks trust/keystores,我们不希望将密钥存储在两个位置。
正如您已经发现的那样,默认 ServerBuilder
是有限的。我建议使用 NettyServerBuilder
,它能够处理不同类型的输入,例如 KeyStore、KeyManager 等。
将以下依赖项添加到您的项目中:
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
</dependency>
SslContextBuilder sslContextBuilder = SslContextBuilder.forServer(keyManager).trustManager(trustManager);
SslContext sslContext = GrpcSslContexts.configure(sslContextBuilder).build();
Server server = NettyServerBuilder.forPort(8443)
.addService(new HelloServiceImpl())
.sslContext(sslContext)
.build()
.start();
KeyManager/TrustManager可以用工厂构建类:
- KeyManagerFactory
- TrustManagerFactory
另请参阅此处了解其他配置:DZone - Secure Your gRPC Services With SSL/TLS