gpt4 book ai didi

java - 为什么 ManagedChannelBuilder 没有用于与服务器建立 TLS 连接的 TLS 参数?

转载 作者:行者123 更新时间:2023-11-30 10:20:07 24 4
gpt4 key购买 nike

在这个例子中https://github.com/grpc/grpc-java/blob/master/interop-testing/src/test/java/io/grpc/testing/integration/TlsTest.java您会看到 TLS 客户端连接具有各种 TLS 参数,例如

        .negotiationType(NegotiationType.TLS)
.sslContext(sslContext)

但到目前为止,我的应用程序使用了 https://github.com/grpc/grpc-java/blob/master/core/src/main/java/io/grpc/ManagedChannelBuilder.java默认情况下似乎支持 TLS。它采用的唯一参数是可以关闭 TLS 的“usePlaintext”。

注意:我已经按照https://grpc.io/docs/guides/auth.html的推荐在机器上安装了OpenSSL

此页面确实声明:

If the issuing certificate authority is not known to the client then a properly configured SslContext or SSLSocketFactory should be provided to the NettyChannelBuilder or OkHttpChannelBuilder, respectively.

所以也许您只能在客户端知道发出 ca 时使用 ManagedChannelBuilder...但我不确定这意味着什么。也许这意味着 cacert 在 jvm 的 keystore 中?

为什么我不必在 Managed channel 构建器上指定 TLS 参数?

最佳答案

Eric Anderson提到我们可以使用 TlsChannelCredentialsTlsServerCredentialsgrpc-java v1.37.0 以来,我们如何为 gRPC 做到这一点 客户:

    private ServiceGrpc.ServiceBlockingStub client() {
ChannelCredentials credentials = TlsChannelCredentials.newBuilder()
//You can use your own certificate here .trustManager(new File("cert.pem"))
.trustManager(InsecureTrustManagerFactory.INSTANCE.getTrustManagers())
.build();
ManagedChannel channel = Grpc.newChannelBuilderForAddress("localhost", 443, credentials)
.build();
return ServiceGrpc.newBlockingStub(channel);
}

希望对大家有帮助。

关于java - 为什么 ManagedChannelBuilder 没有用于与服务器建立 TLS 连接的 TLS 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com