如何将Solr的HTTP请求重定向至HTTPS?
Solr 8.11.1 启用SSL配置指南(独立实例)
一、用Solr自带工具生成SSL证书
Solr 8.x内置证书生成命令,兼容性最佳,无需额外工具:
bin/solr create_ssl -d server/etc/ -n solr-ssl.keystore.jks -s 2048 -k solrssl -p changeit -y 365
参数说明:
-d:证书存放目录(推荐server/etc/便于统一管理)-n:密钥库文件名-s:密钥长度(2048满足安全需求)-k:密钥库别名-p:密钥库密码(后续所有配置需与该密码一致)-y:证书有效期(单位:天)
二、修改Solr核心配置文件
1. 编辑启动配置文件
Linux/macOS 编辑 server/etc/solr.in.sh,Windows 编辑 server\bin\solr.in.cmd,添加以下配置:
# 启用SSL SOLR_SSL_ENABLED=true # 密钥库路径 SOLR_SSL_KEY_STORE=server/etc/solr-ssl.keystore.jks # 密钥库密码 SOLR_SSL_KEY_STORE_PASSWORD=changeit # 信任库路径(自签证书可与密钥库共用) SOLR_SSL_TRUST_STORE=server/etc/solr-ssl.keystore.jks # 信任库密码 SOLR_SSL_TRUST_STORE_PASSWORD=changeit # 关闭客户端证书验证(单向SSL场景) SOLR_SSL_NEED_CLIENT_AUTH=false # 兼容旧加密协议(可选,适配老客户端) SOLR_SSL_ALLOW_WEAK_SSL_PROTOCOLS=true
2. 修改Solr实例配置
编辑 server/solr/solr.xml,调整端口配置:
<solr> <str name="host">localhost</str> <int name="jetty.port">8983</int> <int name="jetty.ssl.port">8983</int> <!-- 将SSL端口设为原HTTP端口,替换HTTP访问 --> </solr>
若需保留HTTP端口,可将jetty.ssl.port设为其他端口(如8984),但需同步调整主服务器访问地址。
三、重启Solr服务
# 停止现有Solr进程 bin/solr stop -all # 启动SSL配置后的服务 bin/solr start
四、主服务器客户端适配
主服务器原HTTP访问需切换为HTTPS,针对自签证书场景:
- Java客户端:将生成的
solr-ssl.keystore.jks导入主服务器JVM信任库:keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore $JAVA_HOME/jre/lib/security/cacerts -srcstorepass changeit -deststorepass changeit - 其他语言客户端(如Python/PHP):测试阶段可临时关闭证书验证(生产环境务必导入证书信任),以Python requests为例:
import requests requests.get("https://localhost:8983/solr/", verify=False)
常见问题排查
- 启动失败:查看
server/logs/solr.log,重点检查密钥库密码是否匹配、证书路径是否正确。 - 访问SSL报错:确认主服务器客户端是否信任该自签证书,或是否配置了跳过证书验证(仅测试用)。
- 端口冲突:使用
netstat -tulpn | grep 8983(Linux)或netstat -ano | findstr 8983(Windows)检查端口占用情况,必要时更换SSL端口。
内容的提问来源于stack exchange,提问作者Pavan Kumar K R
相关产品推荐
相关产品推荐

