如何在 Java 中的 Apache Arrow FlightClient 上启用 TLS?

问题描述 投票:0回答:1

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 的理解很容易存在一些差距,这将帮助我更轻松地使用此文档。

我需要使用所有这些吗?其中一些是多余的吗?它们有什么关系?

java tls1.2 apache-arrow apache-arrow-flight
1个回答
0
投票

我看了实现这个 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
是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.