MAPREDUCE服务 MRS-ZooKeeper开源增强特性:ZooKeeper开源增强特性:ZooKeeper SSL通信(Netty连接)

时间:2023-11-07 14:09:49

ZooKeeper开源增强特性:ZooKeeper SSL通信(Netty连接)

ZooKeeper设计最初含有Nio包,且不能较好的支持3.5版本后的SSL。为了解决这个问题,Netty被加入到ZooKeeper中。所以如果用户需要使用SSL,启用Netty并设置Server端和Client端的以下参数。

开源的服务端只支持简单的文本密码,这可能导致相关安全问题。为此在服务端将不再使用此类文本密码。

  • Client端
    1. “zkCli.sh/zkEnv.sh”文件中的参数“-Dzookeeper.client.secure”设置为“true”以在Client端使用安全通信。之后客户端可以连接服务端的secureClientPort。
    2. 通过设置“zkCli.sh/zkEnv.sh”文件中的以下参数配置客户端环境。

      参数

      描述

      -Dzookeeper.clientCnxnSocket

      用于客户端的Netty通信。

      默认值:"org.apache.zookeeper.ClientCnxnSocketNetty"

      -Dzookeeper.ssl.keyStore.location

      keystore文件路径。

      -Dzookeeper.ssl.keyStore.password

      加密密码。

      -Dzookeeper.ssl.trustStore.location

      truststore文件路径。

      -Dzookeeper.ssl.trustStore.password

      加密密码。

      -Dzookeeper.config.crypt.class

      用于加密密码的解密。

      -Dzookeeper.ssl.password.encrypted

      默认值:false

      当keystore和truststore的密码为加密密码时设置为true。

      -Dzookeeper.ssl.enabled.protocols

      通过配置此参数定义SSL协议以适用于SSL上下文。

      -Dzookeeper.ssl.exclude.cipher.ext

      通过配置此参数定义SSL上下文中应排除的密码列表,之间以逗号间隔。

      以上参数须在“zkCli.sh/zk.Env.sh”文件内设置。

  • Server端
    1. 在文件“zoo.cfg”中将SSL端口参数“secureClientPort”设置为“3381”
    2. 在server端将文件“zoo.cfg”中的参数“zookeeper.serverCnxnFactory”设置为“org.apache.zookeeper.server.NettyServerCnxnFactory”
    3. 设置文件zoo.cfg(路径:“zookeeper/conf/zoo.cfg”)中的以下参数来配置服务端环境。

      参数

      描述

      ssl.keyStore.location

      keystore.jks文件路径。

      ssl.keyStore.password

      加密密码。

      ssl.trustStore.location

      truststore文件路径。

      ssl.trustStore.password

      加密密码。

      config.crypt.class

      用于加密密码的解密。

      ssl.keyStore.password.encrypted

      默认值:false

      设置为true时可使用加密密码。

      ssl.trustStore.password.encrypted

      默认值:false

      设置为true时可使用加密密码。

      ssl.enabled.protocols

      通过配置此参数定义SSL协议以适用于SSL上下文。

      ssl.exclude.cipher.ext

      通过配置此参数定义SSL上下文中应排除的密码列表,之间以逗号间隔。

    4. 启动ZKserver,然后将安全客户端连接到安全端口。
  • 凭证

    ZooKeeper上Client和Server之间的凭证由X509AuthenticationProvider执行。根据以下参数指定服务端证书及信任客户端证书,并通过这些证书初始化X509AuthenticationProvider。

    • zookeeper.ssl.keyStore.location
    • zookeeper.ssl.keyStore.password
    • zookeeper.ssl.trustStore.location
    • zookeeper.ssl.trustStore.password

    若用户不想使用ZooKeeper的默认机制,可根据所需配置不同的ZooKeeper信任机制。

support.huaweicloud.com/productdesc-mrs/mrs_08_007003.html