为云索引搜索服务器 (Solr) 配置 SSL
在开始配置之前,您必须拥有以单个文件形式转换为 PEM 格式的证书和密钥。
* 
如果仅证书文件不可用,您可以选择通过证书和密钥文件生成一个仅证书文件:
1. 使用 keytool 实用程序将 JKS keystore 转换为 PKCS12 格式:
keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore solr-ssl.keystore.p12 -srcstoretype jks -deststoretype pkcs12
2. 使用 openssl 命令将 PKCS12 格式的 keystore (仅包括证书,而不包括密钥) 转换为 PEM 格式:
openssl pkcs12 -nokeys -in solr-ssl.keystore.p12 -out solr-ssl.cacert.pem
3. 如果 truststore 和 keystore 的格式为 PKCS12,则通过设置 SOLR_SSL_KEY_STORESOLR_SSL_TRUST_STORE 以及 p12 文件的路径来使用 p12 文件。
4. 如果 truststore 和 keystore 的格式为 JKS,则通过设置 SOLR_SSL_KEY_STORESOLR_SSL_TRUST_STORE 以及 jks 文件的路径来使用 jks 文件,同时将 SOLR_SSL_KEY_STORE_TYPESOLR_SSL_TRUST_STORE_TYPE 设置为 JKS
* 
从 Solr 9.0.0 开始,如果使用 SSL 配置 Windchill,则应使用 SSL 配置 Solr。
为 Solr 配置 SSL
为运行 Solr 的所有节点配置 Windchill Index Search 服务器。将相同证书和密钥文件用于所有节点。
1. 将证书 (jks 或 pkcs12) 文件复制到 <Index_Search_Home>/solr/server/etc 中。
在群集设置中部署多个 Solr 服务器时,请确保在运行 Solr 的每个节点中都导入所有 Solr 服务器的密钥库文件,如下面的示例所述:
Solr 服务器
计算机
要导入的密钥库文件
示例导入命令
SolrServerA
Node1
导入密钥库文件 SolrServerB 和 SolrServerC。
keytool -importkeystore -srckeystore SolrServerB.jks -destkeystore SolrServerA.jks -srcstoretype JKS -deststoretype JKS
keytool -importkeystore -srckeystore SolrServerC.jks -destkeystore SolrServerA.jks -srcstoretype JKS -deststoretype JKS
SolrServerB
Node2
导入密钥库文件 SolrServerA 和 SolrServerC。
keytool -importkeystore -srckeystore SolrServerA.jks -destkeystore SolrServerB.jks -srcstoretype JKS -deststoretype JKS
keytool -importkeystore -srckeystore SolrServerC.jks -destkeystore SolrServerB.jks -srcstoretype JKS -deststoretype JKS
SolrServerC
Node3
导入密钥库文件 SolrServerA 和 SolrServerB。
keytool -importkeystore -srckeystore SolrServerA.jks -destkeystore SolrServerC.jks -srcstoretype JKS -deststoretype JKS
keytool -importkeystore -srckeystore SolrServerB.jks -destkeystore SolrServerC.jks -srcstoretype JKS -deststoretype JKS
2. 设置常用的 SSL 相关的系统特性。
要激活 SSL 设置,请取消注释并更新以下文件中以 SOLR_SSL_* 开头的特性集:
Windows:bin\solr.in.cmd
例如:
set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_KEY_STORE_PASSWORD=<password>
set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_TRUST_STORE_PASSWORD=<password>
REM Require clients to authenticate
set SOLR_SSL_NEED_CLIENT_AUTH=false
REM Enable clients to authenticate (but not require)
set SOLR_SSL_WANT_CLIENT_AUTH=false
Unix:bin/solr.in.sh
例如:
bin/solr.in.sh example SOLR_SSL_* configuration
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_KEY_STORE_PASSWORD=<password>
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
SOLR_SSL_TRUST_STORE_PASSWORD=<password>
# Require clients to authenticate
SOLR_SSL_NEED_CLIENT_AUTH=false
# Enable clients to authenticate (but not require)
SOLR_SSL_WANT_CLIENT_AUTH=false
其中 <password> 是创建证书时给定的密码。
3. 打开 Windchill shell 并执行以下命令,以将该协议设置为索引搜索客户端在连接到索引搜索服务器时所使用的 HTTPS:
xconfmanager -s wt.index.solrProtocol=https -t codebase/wt.properties -p
4. Windchill 配置为使用 SSL 时,所有在 Windchill 之外使用的 Java 客户端都需要证书来进行连接。
因此,必须将证书导入 Solr 云中的 Solr 节点所使用的 JVM。这样,Solr 节点便可连接到 Windchill 并下载索引文档。
将证书文件添加到 JVM 可信存储 (Solr 节点的 JDK/JVM)。
a. 导航至 Solr 节点所使用的 Java 位置,以验证 <JAVA_HOME>/lib/securitycacerts 文件的路径。
b. 导航至 <JAVA_HOME>/bin 以导入新的证书。以对 cacerts 具有写入权限的用户身份运行 keytool 实用程序:
keytool -import -file <许可证文件> -alias <唯一名称> -keystore <cacerts 文件路径>
例如:
keytool -import -file D:\SolrWithSSL\solr-5.4.1\server\etc\solr-ssl.cacert.pem -alias Key_Alias -keystore ../lib/security/cacerts
5. 重新启动 Windchill
为 Zookeeper 配置 SSL
1. 启动任何 Solr 节点之前,urlScheme 群集范围内的特性需要设置为 https
打开命令提示符,并导航至 <INDEX_SEARCH_HOME>/solr/server/scripts/cloud-scripts,然后执行以下命令:
Windows:
zkcli.bat -zkhost <以逗号分隔的 Zookeeper 主机名列表:端口条目> -cmd clusterprop -name urlScheme -val https
例如:
zkcli.bat -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
Unix:
sh zkcli.sh -zkhost <以逗号分隔的 Zookeeper 主机名列表:端口条目> -cmd clusterprop -name urlScheme -val https
例如:
sh zkcli.sh -zkhost host1.ptcnet.ptc.com:2181,host2.ptcnet.ptc.com:2182,host3.ptcnet.ptc.com:2183 -cmd clusterprop -name urlScheme -val https
* 
每当重新启动 Zookeeper 节点时,均应执行 urlScheme 命令。
2. 重新启动 Solr 云 (Zookeeper 节点和 Solr 节点),然后导航至 Solr 管理界面以验证 Solr 已运行 SSL。
* 
预设情况下,Solr 未应用任何密码套件的配置,使用由 Jetty 提供的默认密码套件。有关详细信息,请参阅适用的 Jetty : The Definitive Reference (eclipse.dev)。建议参考内部安全需求和安全策略,以制定使用安全密码套件的指导方针。
这对您有帮助吗?