Java 为什么ManagedChannel Builder没有用于建立到服务器的TLS连接的TLS参数?
在本例中,您可以看到TLS客户端连接具有各种TLS参数,例如Java 为什么ManagedChannel Builder没有用于建立到服务器的TLS连接的TLS参数?,java,ssl,grpc,Java,Ssl,Grpc,在本例中,您可以看到TLS客户端连接具有各种TLS参数,例如 .negotiationType(NegotiationType.TLS) .sslContext(sslContext) 但到目前为止,我的应用程序使用了默认情况下似乎支持TLS的。它采用的唯一参数是“usePlaintext”,它可以关闭TLS 注意:我已经按照 本页未说明: 如果客户端不知道颁发证书的机构,则应分别向NettyChannel Builder或OkhttpChannel Build
.negotiationType(NegotiationType.TLS)
.sslContext(sslContext)
但到目前为止,我的应用程序使用了默认情况下似乎支持TLS的。它采用的唯一参数是“usePlaintext”,它可以关闭TLS
注意:我已经按照
本页未说明:
如果客户端不知道颁发证书的机构,则应分别向NettyChannel Builder或OkhttpChannel Builder提供正确配置的SslContext或SSLSocketFactory
因此,您可能只能在客户端知道发出ca时使用ManagedChannel Builder
。。。但我不确定这意味着什么。也许这意味着cacert在jvm的密钥库中
为什么我不必在
Managed
channel builder上指定TLS参数?TLS配置很复杂,并且取决于实现,并且managedChannel builder
可以与TLS以外的东西一起使用。因此,managedChannel Builder
仅具有TLS的粗略配置(开/关)。这在常见的web浏览器TLS情况下运行良好:1)没有客户端证书,2)服务器证书由一个CA签名,该CA链接到客户端信任存储中的根CA
但是,NettyChannelBuilder
和OkHttpChannelBuilder
上提供了更具体的配置。由于实现方式不同,因此每个应用程序的TLS配置方式不同。第一个代码片段中的sslContext
是一个Netty对象;这显然是OkHttpChannelBuilder
中的糟糕配置
ManagedChannelBuilder
不应该有“所有选项”。它应该有跨传输实现的通用选项。在特定的传输实现生成器上提供了更多的特定选项,如NettyChannelBuilder
和OkHttpChannelBuilder