启用Certificate Authentication Plugin后Solr 9访问失败求助
Solr 9.2 CertAuthPlugin 认证问题排查思路
以下是针对你遇到的认证错误的分步排查方案:
1. 验证SSL客户端证书强制配置
- 检查Solr节点的SSL启动参数(
solr.in.sh或solr.in.cmd):- 确保
SOLR_SSL_CLIENT_AUTH设置为true(强制客户端提供证书),而非默认的false或want; - 确认
SOLR_SSL_TRUST_STORE指向的信任库已导入客户端证书的签发CA(自签名场景下,需将客户端证书直接导入服务器信任库); - 核对
SOLR_SSL_KEY_STORE、SOLR_SSL_TRUST_STORE_PASSWORD等参数无拼写错误,证书文件路径正确且权限可读取。
- 确保
2. 检查security.json配置有效性
- 用ZK客户端工具(
zkCli.sh)执行get /security.json,确认上传的配置与本地编辑内容完全一致:- 认证部分需明确指定
class为org.apache.solr.security.CertAuthPlugin,map中的CN需与客户端证书的完整DN完全匹配(注意大小写、逗号分隔的顺序,比如CN=admin,OU=Solr,O=Example); - 授权部分的
RuleBasedAuthorizationPlugin需为admin-role配置必要权限(如query、security-edit、collection-admin-edit等),确保角色权限覆盖你的操作场景; - 检查JSON语法是否合法,比如无遗漏逗号、引号配对正确——Solr启动日志中若存在
JSONParseException,直接指向配置格式错误。
- 认证部分需明确指定
3. 分析Solr节点启动与运行日志
- 查看Solr核心日志(
solr.log),搜索以下关键词定位问题:CertAuthPlugin:确认插件是否成功初始化,是否有Failed to initialize类错误;SSLHandshakeException:排查证书链不匹配、信任库未导入客户端证书等SSL握手问题;authorization:检查角色权限配置是否加载成功,是否存在权限规则解析错误;ZK:确认Solr节点成功连接ZK并拉取到最新的security.json配置。
4. 验证客户端请求的证书发送逻辑
- 浏览器端:
- 先将服务器自签名证书导入浏览器信任根(避免因证书不信任导致的请求中断);
- 首次访问Solr UI时,确认浏览器弹出了客户端证书选择框并正确选择对应证书;若未弹出,检查浏览器的客户端证书权限设置。
- Postman/curl端:
- Postman需在
Settings > Certificates中配置匹配目标URL的PKCS#12格式证书(含私钥),核对证书密码正确; - 用curl命令做最简测试,观察SSL握手细节:
重点查看日志中是否有curl -v --cert /path/to/client-cert.p12:cert-password --cacert /path/to/server-ca.crt https://solr-node:8983/solr/your-collection/select?q=*:*Client certificate sent相关输出,若没有则说明客户端未正确发送证书。
- Postman需在
5. 确认ZK配置同步与Solr节点状态
- 用
solr zk status检查ZK集群健康状态,确保所有Solr节点均已连接ZK; - 彻底重启所有Solr节点:杀死残留的Solr进程(
ps aux | grep solr)后再启动,避免旧配置缓存导致的不一致。
6. 排查认证插件冲突
- 确认
security.json中仅配置了CertAuthPlugin作为认证类,无其他认证插件(如BasicAuthPlugin)并存; - 检查
solr.xml中的securityConfig参数是否指向ZK的/security.json,避免本地配置覆盖集群配置。
内容的提问来源于stack exchange,提问作者MichaelEr
相关产品推荐
相关产品推荐

