MAPREDUCE服务 MRS-ZooKeeper开源增强特性:ZooKeeper开源增强特性:ZooKeeper SSL通信(Netty连接)
ZooKeeper开源增强特性:ZooKeeper SSL通信(Netty连接)
ZooKeeper设计最初含有Nio包,且不能较好的支持3.5版本后的SSL。为了解决这个问题,Netty被加入到ZooKeeper中。所以如果用户需要使用SSL,启用Netty并设置Server端和Client端的以下参数。
开源的服务端只支持简单的文本密码,这可能导致相关安全问题。为此在服务端将不再使用此类文本密码。
- Client端
- 将“zkCli.sh/zkEnv.sh”文件中的参数“-Dzookeeper.client.secure”设置为“true”以在Client端使用安全通信。之后客户端可以连接服务端的secureClientPort。
- 通过设置“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端
- 在文件“zoo.cfg”中将SSL端口参数“secureClientPort”设置为“3381”。
- 在server端将文件“zoo.cfg”中的参数“zookeeper.serverCnxnFactory”设置为“org.apache.zookeeper.server.NettyServerCnxnFactory”。
- 设置文件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上下文中应排除的密码列表,之间以逗号间隔。
- 启动ZKserver,然后将安全客户端连接到安全端口。
- 凭证
ZooKeeper上Client和Server之间的凭证由X509AuthenticationProvider执行。根据以下参数指定服务端证书及信任客户端证书,并通过这些证书初始化X509AuthenticationProvider。
- zookeeper.ssl.keyStore.location
- zookeeper.ssl.keyStore.password
- zookeeper.ssl.trustStore.location
- zookeeper.ssl.trustStore.password
若用户不想使用ZooKeeper的默认机制,可根据所需配置不同的ZooKeeper信任机制。
- MapReduce服务_什么是ZooKeeper_如何使用ZooKeeper
- MapReduce服务_什么是MapReduce服务_什么是HBase
- MapReduce服务_什么是Hue_如何使用Hue
- MapReduce服务_什么是Hive_如何使用Hive
- MapReduce服务_什么是Yarn_如何使用Yarn
- MapReduce服务_什么是HDFS_HDFS特性
- MapReduce服务_什么是Kafka_如何使用Kafka
- MapReduce服务_什么是存算分离_如何配置MRS集群存算分离
- kafka是什么_kafka介绍_分布式消息服务Kafka版
- MapReduce服务_什么是Loader_如何使用Loader