Solr Https安全证书密码

时间:2018-06-25 11:18:03

标签: https solr jetty

默认情况下,在Https上设置Solr要求将证书密码作为纯文本存储在“ bin \ solr.in.cmd”中(使用Windows托管solr) 证书密码会在门户中显示。

如何使用Https证书配置Solr以确保证书密码安全?

我想使用私有证书,以便客户端默认情况下信任证书,而不是自签名证书。 我正在从C#通过SolrNet连接,目前没有身份验证,但是将来可以查看包装SolrNet的提供程序所支持的基本身份验证。

似乎我认为应该支持的基本事物?在此找不到任何文章/文档。 有人解决了吗?

我发现的最近的是:

Setting SOLR SSL properties

http://lucene.472066.n3.nabble.com/Prevent-the-SSL-Keystore-and-Truststore-password-from-showing-up-in-the-Solr-Admin-and-Linux-process-td4257422.html

一些建议使用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配置证书密码。

1 个答案:

答案 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上看不到证书密码