我想在客户端和服务器之间建立tls / ssl连接(不相互,单向)。
这是我的设置:
服务器:
Server server = ServerBuilder.forPort(8443)
// Enable TLS
.useTransportSecurity(certChainFile, privateKeyFile)
.addService(new GreetingServiceImpl())
.build();
客户端
// With server authentication SSL/TLS
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8443)
.build();
GreetingServiceGrpc.GreetingServiceBlockingStub stub =
GreetingServiceGrpc.newBlockingStub(channel);
我需要的只是终端命令来生成 certChainFile 和 privateKeyFile(在.pem中)以将这些文件传递给服务器代码,如上所示
答案 0 :(得分:0)
我只需要终端命令来生成certChainFile和privateKeyFile
openssl req -x509 -newkey rsa:1024 -keyout ./testkey.pem -out ./testcert.crt -days 999 -subj "/CN=localhost"
此命令生成RSA密钥和自签名证书。
但你还需要更多。
默认情况下,SSL会检查公用名(CN)是否等于主机名。因此,您需要生成具有CN = localhost
客户端必须信任服务器的证书,因此需要将证书导入到客户端的信任中(虽然我不知道如何为客户端配置信任存储,我会留给你)。