Java Apache Arrow 的文档 (
v11.0.0
) FlightClient.Builder
有几种与构建支持 TLS 的客户端相关的方法:
clientCertificate(InputStream clientCertificate, InputStream clientKey)
useTls()
overrideHostname(String hostname)
trustedCertificates(InputStream stream)
verifyServer(boolean verifyServer)
描述不够详细,我无法理解启用和使用 TLS 与
FlightServer
相关的描述。我对 TLS 的理解很容易存在一些差距,这将帮助我更轻松地使用此文档。
我需要使用所有这些吗?其中一些是多余的吗?它们有什么关系?
我看了实现这个 API 的代码以获得一些见解。
useTls
只是告诉底层客户端构建器开始为支持 TLS 的客户端组合 SSL 上下文。通过将 grpc+tls
方案附加到位置属性来实现相同的效果。
其余选项用于添加到 SSL 上下文。上下文生成器由
io.netty.handler.ssl.SslContextBuilder
提供。
clientCertificate(cert, key)
将提供的证书/密钥添加到 SSL 上下文的密钥管理器中。trustedCertificates(cert)
将提供的证书添加到信任管理器(用于第三方连接验证)。verifyServer(bool)
不能是 false
如果提供以上两个中的任何一个,因为它们需要验证服务器。如果这是 false
,信任管理器将简单地使用 InsecureTrustManagerFactory.INSTANCE
设置。overrideHostname(hostname)
在通道构建器上调用底层 overrideAuthority()
。这与我正在尝试做的事情并没有真正的关系。我是否需要使用所有这些(忽略
overrideHostname
)?这取决于客户端将连接到的服务器上 TLS 的配置方式。
他们中的任何一个都是多余的吗?如果
useTls()
属性已经附加了 TLS 方案,则 location
是多余的。