在CentOS上配置Zookeeper的安全设置主要包括以下几个方面:启用SSL/TLS加密通信、配置认证和授权。以下是一个详细的步骤指南:
首先,你需要生成SSL/TLS证书和密钥。可以使用OpenSSL来生成自签名证书。
# 创建一个目录来存放证书和密钥
mkdir -p /etc/zookeeper/ssl
# 生成私钥
openssl genrsa -out /etc/zookeeper/ssl/zookeeper.key 2048
# 生成证书签名请求(CSR)
openssl req -new -key /etc/zookeeper/ssl/zookeeper.key -out /etc/zookeeper/ssl/zookeeper.csr -subj "/CN=localhost"
# 生成自签名证书
openssl x509 -req -days 365 -in /etc/zookeeper/ssl/zookeeper.csr -signkey /etc/zookeeper/ssl/zookeeper.key -out /etc/zookeeper/ssl/zookeeper.crt
编辑Zookeeper的配置文件/etc/zookeeper/conf/zoo.cfg
,添加以下配置:
# 启用SSL
ssl=true
# SSL相关配置
ssl.keystore.location=/etc/zookeeper/ssl/zookeeper.jks
ssl.keystore.password=your_keystore_password
ssl.truststore.location=/etc/zookeeper/ssl/zookeeper.jks
ssl.truststore.password=your_truststore_password
# 客户端认证模式
ssl.clientAuth=need
# SSL协议版本
ssl.protocol=TLSv1.2
将生成的证书和密钥导入到Java KeyStore中。
# 创建KeyStore文件
keytool -importkeystore -srckeystore /etc/zookeeper/ssl/zookeeper.jks -destkeystore /etc/zookeeper/ssl/zookeeper.jks -srcstoretype JKS -deststoretype JKS
# 导入证书到TrustStore
keytool -import -alias zookeeper -file /etc/zookeeper/ssl/zookeeper.crt -keystore /etc/zookeeper/ssl/zookeeper.jks -storepass your_keystore_password
编辑Zookeeper的zoo.cfg
文件,添加以下配置来启用认证和授权:
# 启用认证
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
# SASL配置
jaasLoginRenew=3600000
创建JAAS配置文件/etc/zookeeper/conf/zookeeper_jaas.conf
,内容如下:
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_password"
user_admin="admin_password";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required;
};
最后,重启Zookeeper服务以应用所有配置更改。
systemctl restart zookeeper
你可以使用zkCli.sh
脚本来验证配置是否正确。首先,确保你已经设置了环境变量:
export ZOOCFGDIR=/etc/zookeeper/conf
export ZOO_LOG_DIR=/var/log/zookeeper
然后,使用以下命令连接到Zookeeper并验证认证:
./zkCli.sh -server localhost:2181 -auth digest user_super:super_password
如果一切配置正确,你应该能够成功连接并执行一些操作。
通过以上步骤,你可以在CentOS上为Zookeeper配置SSL/TLS加密通信以及认证和授权设置。