为独立索引搜索服务器 (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
配置 Windchill Index Search 客户端
1. 打开 Windchill shell 并执行以下命令,以将该协议设置为索引搜索客户端在连接到索引搜索服务器时所使用的 HTTPS:
xconfmanager -s wt.index.solrProtocol=https -t codebase/wt.properties -p
2. 重新启动 Windchill
配置 Windchill Index Search 服务器
1. 将证书 (JKS) 文件复制到 <Index_Search_Home>/solr/server/etc 中。
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> 是创建证书时给定的密码。
如果您想要修改 Solr keystore 的默认密码,请执行以下步骤以避免 Solr 服务器启动问题:
a. 请确保 Windows 的 solr.in.cmd 或 Unix 的 solr.in.sh 的密码正确。
b. 打开 <INDEX_SEARCH_HOME>/solr/server/etc/jetty-ssl.xml 文件
c. 使用正确的密码更新下列特性值:
<Set name="KeyStorePassword"><Property name="solr.jetty.keystore.password"
default="<enter the correct password>"/></Set>
<Set name="TrustStorePassword"><Property name="solr.jetty.truststore.password"
default="<enter the correct password>"/></Set>
d. 保存 jetty-ssl.xml 文件并启动 Solr 服务器。
3. 将证书文件添加到 JVM 可信存储 (仅限 Windchill 的 JDK/JVM)。
a. 导航至 Windchill 所使用的 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
4. 如果 Solr 服务器配置为非 SSL,而 Windchill 配置为使用 SSL,则在 Windchill 外部使用的任何 Java 客户端都需要证书进行连接。
因此,您必须将证书导入索引搜索服务器所使用的 JVM。这样,索引搜索服务器便可连接到 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. 如果 Solr 服务器和 Windchill 都配置为使用 SSL,请将证书文件 (pem 或 pkcs12 格式) 添加到 Solr 服务器的可信存储。默认情况下,从上述步骤中创建的 <Solr Server Home>/solr/server/etc/solr-ssl.keystore.jks 引用密钥库和可信存储。
运行 keytool 实用程序:
keytool -import -file <windchill certificate file in pem or pkcs12 format>
-alias <unique name> -keystore <Solr Server Home>/solr/server/etc/solr-ssl.keystore.jks
例如:
keytool -import -file D:\ptc\Windchill\certificates\windchillserver.pem
-alias Key_Alias -keystore D:\SolrWithSSL\SolrServer\solr\server\etc\solr-ssl.keystore.jks
6. 重新启动 Windchill 和索引搜索服务器,然后导航至 Solr 管理界面以验证 Solr 已运行 SSL。
* 
有关默认密码的详细信息,请参阅 Apache Solr 参考指南
* 
预设情况下,Solr 未应用任何密码套件的配置,使用由 Jetty 提供的默认密码套件。有关详细信息,请参阅适用的 Jetty : The Definitive Reference (eclipse.dev)。建议参考内部安全需求和安全策略,以制定使用安全密码套件的指导方针。
这对您有帮助吗?