SOLR 9.6.1与Zookeeper 3.8.1启用SSL遇故障求助
故障排查步骤与遗漏配置项检查
一、证书有效性与信任链排查
- 用
keytool命令验证密钥库/信任库的证书完整性:
确认根证书、中间证书、服务器证书都存在,且有效期未过期,证书链完整。keytool -list -v -keystore /path/to/your/keystore.jks - 检查证书的**CN(通用名称)或SAN(主题备用名称)**是否匹配访问用的主机名/IP:
- 浏览器访问Solr UI时,证书必须包含你输入的域名/IP;ZK集群间通信的证书必须包含各节点的主机名/IP。
- 确保Solr和ZK使用的信任库包含彼此的证书:如果是双向认证,ZK的信任库要包含Solr的证书,Solr的信任库也要包含ZK的证书;单向认证则只需客户端信任服务端证书。
二、Zookeeper配置一致性检查
- 确认3个ZK节点的
zoo.cfg中SSL配置完整(除secureClientPort和dataDir外其余一致):
必须包含以下配置:ssl.keyStore.location=/path/to/keystore.jks ssl.keyStore.password=your_keystore_pwd ssl.trustStore.location=/path/to/truststore.jks ssl.trustStore.password=your_truststore_pwd ssl.quorum=true # 开启集群间SSL通信 ssl.clientAuth=optional # 根据需求设为required(双向认证)或optional(单向) - 检查
server.*配置是否对应SSL端口:
例如节点1的配置应为:
确保集群间通信的端口(2888、3888)正常开放,且myid文件与server.id完全对应,文件权限归ZK进程用户所有。server.1=localhost:2888:3888:participant;2181 # 最后一个端口是secureClientPort - 查看ZK启动日志,确认是否有密钥库加载失败或SSL上下文初始化错误,这通常是路径或密码错误导致。
三、Solr与Zookeeper的SSL适配配置
- 修改
solr.in.sh,添加Solr连接ZK的SSL客户端配置(最容易遗漏的项):SOLR_ZK_CLIENT_SSL_KEYSTORE=/path/to/keystore.jks SOLR_ZK_CLIENT_SSL_KEYSTORE_PASSWORD=your_pwd SOLR_ZK_CLIENT_SSL_TRUSTSTORE=/path/to/truststore.jks SOLR_ZK_CLIENT_SSL_TRUSTSTORE_PASSWORD=your_pwd SOLR_ZK_CLIENT_SSL_NEED_AUTH=false # 单向认证设为false,双向设为true - 确认
solr.in.sh中ZK连接串使用的是ZK的secureClientPort:ZK_HOST=localhost:2181,localhost:2182,localhost:2183 # 对应3个ZK的SSL端口 - 检查Solr的SSL端口配置:确保
SOLR_SSL_ENABLED=true,且浏览器访问使用HTTPS+SSL端口(默认8984,而非原HTTP端口8983)。
四、网络与权限排查
- 检查Ubuntu防火墙(ufw)是否开放所需端口:
ufw status # 开放端口示例: ufw allow 8984/tcp # Solr SSL端口 ufw allow 2181/tcp # ZK节点1 SSL端口 ufw allow 2182/tcp # ZK节点2 SSL端口 ufw allow 2183/tcp # ZK节点3 SSL端口 ufw allow 2888/tcp # ZK集群通信端口 ufw allow 3888/tcp # ZK选举端口 - 确保Solr监听0.0.0.0而非仅localhost:修改jetty配置,将连接器的
host设为0.0.0.0,否则Windows机器无法远程访问。 - 检查密钥库/信任库文件权限:确保Solr和ZK进程用户(如
solr、zookeeper)有读取权限:chown solr:solr /path/to/keystore.jks chown zookeeper:zookeeper /path/to/keystore.jks
五、浏览器端验证
- 必须用
https://<服务器IP>:<SSL端口>/solr访问,禁止使用HTTP协议。 - 若浏览器提示证书不受信任,可将根证书导入Windows的「信任根证书颁发机构」;生产环境需确保证书由受信任CA签发。
- 关闭浏览器代理或确认代理支持HTTPS请求。
常见遗漏配置项总结
- Solr连接ZK的SSL客户端参数(
SOLR_ZK_CLIENT_SSL_*系列配置) - ZK集群间SSL通信开关
ssl.quorum=true - 证书SAN字段未包含所有用到的主机名/IP
- Solr监听地址未设为0.0.0.0导致远程访问失败
- 防火墙未开放SSL端口
内容的提问来源于stack exchange,提问作者Vivek R
相关产品推荐
相关产品推荐

