gpt4 book ai didi

java - 设置 SOLR SSL 属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:35 27 4
gpt4 key购买 nike

当我使用提供的 Apache SOLR 启动脚本(版本 6.6.0)时,该脚本创建并执行一个 java 命令行,该命令行具有两组 SSL 属性,其相关元素设置为相同的值。一组的名称类似于 javax.net.ssl.*,而另一组的名称类似于 solr.jetty.*。例如:

java -server ... 
-Dsolr.jetty.keystore.password=secret ...
-Djavax.net.ssl.keyStorePassword=secret ...
... -jar start.jar --module=https

我们的安全团队不允许在命令行或环境变量中传递密码,但允许将密码放在文件中,前提是该文件具有受限的访问权限。我注意到在 solr/server/etc 目录下有一个 jetty-ssl.xml 文件,可以用来为所有的 solr 提供默认值。 jetty.* 属性,包括 solr.jetty.keystore.password。当我从 java 命令行中删除所有 javax.net.ssl.keyStorePasswordsolr.jetty.keystore.password 属性并更新 jetty-ssl 时。使用我的 keystore 密码打开 xml 文件,SOLR 似乎以该文件中包含的默认 keystore 密码开始。然后,我可以将浏览器连接到 https://localhost:8983/solr/# 并正常访问 SOLR 管理页面。

是否在 SOLR 独立产品或 SOLR 云产品中使用了 javax.net.ssl.* 属性?它们是否在浏览器之外的幕后使用到 SOLR 服务器连接以连接到 zookeeper 等其他进程?我在源代码中看到的对它们的唯一引用是在作为 solrj 客户端一部分的 solr 嵌入式代码中。

最佳答案

是的,solr.jetty 服务器端和 javax.net.ssl.* 客户端属性都被 SOLR 使用。对于某些操作,如集合创建,SOLR 似乎连接到自身,当它这样做时,它会尝试通过 SSL 与 javax.net.ssl.* 属性值连接。

就避免在命令行或环境变量中传递属性而言,我提出的解决方案是创建一个只有 premain 方法的 javaagent 类。在这个在 start.jar 中的 main 之前运行的 premain 方法中,我读取了一个包含“ secret ”SSL 属性的属性文件,例如 javax.net.ssl.keyStorePassword。然后代理将该键/值添加到 Java 系统属性。

因此,当 main 启动时,所有 SSL 属性都是已知的,并且没有暴露给命令行或环境变量。显然,必须限制属性文件的所有权和权限以维护安全性。可以将以下内容添加到 SOLR java 命令行,以确保代理运行并可以访问属性文件作为参数:

java -javaagent:ssl-agent.jar=/path/to/ssl/properties/file ... -jar start.jar ... 

参见 here有关编写 Java 代理的信息。

关于java - 设置 SOLR SSL 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com