gRPC:生成certificateChainFile和privateKeyFile以使TLS / SSL正常工作

时间:2017-12-05 12:36:37

标签: java ssl openssl keytool

我想在客户端和服务器之间建立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中)以将这些文件传递给服务器代码,如上所示

1 个答案:

答案 0 :(得分:0)

  

我只需要终端命令来生成certChainFile和privateKeyFile

openssl req -x509 -newkey rsa:1024 -keyout ./testkey.pem -out ./testcert.crt -days 999 -subj "/CN=localhost"

此命令生成RSA密钥和自签名证书。

但你还需要更多。

  1. 默认情况下,SSL会检查公用名(CN)是否等于主机名。因此,您需要生成具有CN = localhost

  2. 的证书
  3. 客户端必须信任服务器的证书,因此需要将证书导入到客户端的信任中(虽然我不知道如何为客户端配置信任存储,我会留给你)。