默认情况下,在Https上设置Solr要求将证书密码作为纯文本存储在“ bin \ solr.in.cmd”中(使用Windows托管solr) 证书密码会在门户中显示。
如何使用Https证书配置Solr以确保证书密码安全?
我想使用私有证书,以便客户端默认情况下信任证书,而不是自签名证书。 我正在从C#通过SolrNet连接,目前没有身份验证,但是将来可以查看包装SolrNet的提供程序所支持的基本身份验证。
似乎我认为应该支持的基本事物?在此找不到任何文章/文档。 有人解决了吗?
我发现的最近的是:
一些建议使用jetty-https.xml并在那里加密配置。 寻找更完整的答案。
我遇到过以下Solr门票:
https://issues.apache.org/jira/browse/SOLR-10307
https://issues.apache.org/jira/browse/SOLR-8897
Solr 7.0和6.7(尚未发布)中已添加了从环境变量加载证书密码的支持。 我不认为使用环境变量会更好,但是会有所进步。 还有一个使用Hadoop凭证提供程序的链接,但是我没有使用Hadoop,因此不适用于我。
在票证的注释中,提到有人尝试了Jetty Password Utility,并且Solr UI通过HTTPS加载。但是,Collection API出错,无法理解密码格式。
因此,我仍然无法以一种安全的方式为Solr配置证书密码。
答案 0 :(得分:1)
对我而言,证书密码未存储在SOLR门户上
查看我的设置
SSL
cd /path/to/solr/server/etc/
以下命令将在当前目录中创建一个名为solr-ssl.keystore.jks
的密钥库文件
keytool -genkeypair -alias solr-ssl -keyalg RSA -keysize 2048 -keypass secret -storepass secret -validity 9999 -keystore solr-ssl.keystore.jks -ext SAN=DNS:localhost,IP:@ipsolr,IP:127.0.0.1 -dname "CN=localhost, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx"
将证书和密钥转换为PEM格式以用于Curl
keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore solr-ssl.keystore.p12 -srcstoretype jks -deststoretype pkcs12
接下来,使用openssl将PKCS12格式的密钥库转换为PEM格式
openssl pkcs12 -in solr-ssl.keystore.p12 -out solr-ssl.pem
转到$ JAVA_HOME(进入jre / lib / security)
curl --cacert /pah/to/solr/server/etc/solr-ssl.pem https://localhost:8983/solr/
设置与SSL相关的通用系统属性
vi /etc/default/solr.in.sh
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_TRUST_STORE_PASSWORD=secret
SOLR_SSL_NEED_CLIENT_AUTH=false
SOLR_SSL_WANT_CLIENT_AUTH=false
SOLR_SSL_KEY_STORE_TYPE=JKS
SOLR_SSL_TRUST_STORE_TYPE=JKS
重新启动solr
service solr restart
用于身份验证 在SOLR_HOME上创建security.json(对我来说是/ var / solr / data /) 所有者:root 请参阅security.json示例以配置您希望的
固定后,添加到solr.in.sh
SOLR_AUTH_TYPE="basic"
SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:xxx"
它允许对solr status服务做出回答,因为使用身份验证无法访问
对我来说,这很有效,在solr UI上看不到证书密码