對於獨立索引搜尋伺服器 (Solr) 配置 SSL
開始之前,您必須擁有作為單一檔案轉換為 PEM 格式的憑證和金鑰。
* 
如果沒有僅憑證檔案可供使用,您可以選擇從憑證和金鑰檔案產生一個︰
1. 使用 keytool 公用程式將 JKS 金鑰庫轉換為 PKCS12 格式︰
keytool -importkeystore -srckeystore solr-ssl.keystore.jks -destkeystore solr-ssl.keystore.p12 -srcstoretype jks -deststoretype pkcs12
2. 使用 openssl 指令,將 PKCS12 格式的金鑰庫 (僅包括憑證而不包括金鑰) 轉換為 PEM 格式︰
openssl pkcs12 -nokeys -in solr-ssl.keystore.p12 -out solr-ssl.cacert.pem
3. 如果 trust store 與 key store 的格式為 PKCS12,請透過為 SOLR_SSL_KEY_STORESOLR_SSL_TRUST_STORE 設定 p12 檔案的路徑來使用 p12 檔案
4. 如果 trust store 與 key store 的格式為 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 金鑰庫的預設密碼,請執行下列步驟以避免 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/security 下的 cacerts 檔案路徑。
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/security 下的 cacerts 檔案路徑。
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 伺服器的信任存放區。依預設,jetty 是指 <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 Reference Guide
* 
依預設,Solr 不包含密碼套件的任何組態,且其會使用 Jetty 提供的預設密碼套件。如需詳細資訊,請參閱適用的 Jetty : The Definitive Reference (eclipse.dev)。建議參考您的內部安全性需求與安全性原則,以取得使用安全密碼套件的指南。
這是否有幫助?