TIBC Spotfire SSL 證書安裝 / HTTPS 設定

TIBCO Spotfire SSL 證書安裝 / HTTPS 設定

TIBCO Spotfire SSL 證書安裝 / HTTPS 設定

大家好,我是 Jayson Chan。在企業內部部署 TIBCO Spotfire Server 時,啟用 HTTPS 加密連線是常見的安全性要求。這篇文章將分享我實際處理一張 PFX 格式 SSL 證書的經驗,並點出最容易忽略的細節——keystore 的 alias。希望透過真實案例與圖文說明,幫助你順利完成 Spotfire 的 HTTPS 設定。

一、SSL 證書的常見格式

在開始之前,先認識一下 SSL 證書的各種檔案格式,因為接下來的操作會用到這些概念。以下是常見的檔案後綴及其說明:

檔案後綴 檔案類型 說明
*.DER 或 *.CER 二進制格式 只含有證書資訊,不包含私鑰。
*.CRT 二進制格式或文本格式 只含有證書資訊,不包含私鑰。
*.PEM 文本格式 一般存放證書或私鑰,或同時包含證書和私鑰。*.PEM 如果只包含私鑰,通常會用 *.KEY 作為檔名。
*.PFX 或 *.P12 二進制格式 同時包含證書和私鑰,且通常有密碼保護。這是 Windows 環境常見的交換格式。

二、官方文件參考

TIBCO 官方有詳細的 HTTPS 設定指南,包含自簽憑證、CA 頒發憑證等不同情境:
How to configure HTTPS using self-signed certificate, CA-issued certificate without private key, and CA-issued certificate with private key in TIBCO Spotfire Server

三、實際案例:公司提供 PFX 證書,前人都失敗

這次的任務是要將公司提供的一張 .pfx 格式的 SSL 證書安裝到 Spotfire Server 上。前幾位同事嘗試多次都失敗,最後交給了我。我一開始也以為是 Port 443 沒有開啟的問題,但後來才發現真正的瓶頸在於 alias 設定不正確

1. 現象

依照官方文件修改了 server.xml 後,重新啟動 Spotfire Server,使用 netstat -an 檢查 443 port 並沒有處於 LISTEN 狀態。瀏覽器連線 https://伺服器 出現「拒絕連線」 (refuse to connect)。這表示 Tomcat 根本沒有成功載入憑證,自然不會監聽 443。

2. 關鍵設定檔:server.xml

Spotfire 的 Web 應用程式設定放在 <Spotfire 安裝目錄>/tomcat/conf/server.xml。HTTPS 的設定區塊大致如下:

<SSLHostConfig certificateVerification="none"
                 truststoreFile="./certs/cacerts.jks"
                 truststorePass="your_password"
                 truststoreType="jks"
                 sslProtocol="TLS"
                 protocols="+TLSv1.2,+TLSv1.1,+TLSv1"
                 honorCipherOrder="true"
                 ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA">

    <Certificate certificateKeystoreFile="./certs/keystore.p12"
                 certificateKeystorePassword="your_password"
                 certificateKeystoreType="PKCS12"
                 certificateKeyAlias="server_alias" />
</SSLHostConfig>

其中 <Certificate> 區塊的 certificateKeyAlias 就是指定 keystore 中要使用的憑證別名。如果這個別名錯誤,Tomcat 就無法載入私鑰,導致 HTTPS 無法啟動。

四、查出正確的 alias

由於公司並沒有告知這張 PFX 證書內部的 alias 是什麼,而且 CA 產生的 alias 通常是一串看似亂碼的字串(例如 1e:ab:34:...:f2 之類的指紋格式),所以必須用工具查看。

使用 keytool 命令查看 keystore

Java 自帶的 keytool 可以列出 keystore 的內容,包括 alias。指令如下:

"%JAVA_HOME%\bin\keytool" -list -keystore <你的 keystore 檔案.副檔名>

例如,我的 Java 安裝在 C:\Program Files\Java\jdk-14.0.1\bin\keytool,keystore 檔案是 keystore.p12

"C:\Program Files\Java\jdk-14.0.1\bin\keytool" -list -keystore keystore.p12

執行後會要求輸入密碼(即 PFX 的密碼),接著就會顯示 keystore 內容。請看下圖:

如上圖紅色圈圈處,就是該 keystore 的 alias。圖中的 alias 看起來像是亂碼,若不仔細看很容易忽略。但正是這個 alias 必須填寫到 certificateKeyAlias 屬性中。

五、修正 server.xml 設定

將查到的 alias 填入 <Certificate> 標籤中,例如假設 alias 是 ims(實際可能是亂碼,但此處以簡單名稱舉例):

<Certificate certificateKeystoreFile="./certs/keystore.p12"
                 certificateKeystorePassword="your_password"
                 certificateKeystoreType="PKCS12"
                 certificateKeyAlias="ims" />

存檔後重新啟動 Spotfire Server。這次再檢查 443 port:

netstat -an | find "443"

應該會看到類似 0.0.0.0:443[::]:443 處於 LISTENING 狀態。瀏覽器也能順利使用 HTTPS 連線了。

六、總結

這次經驗讓我深刻體會到,SSL 證書的 alias 是一個非常關鍵卻容易忽略的參數。如果只知道提供 PFX 檔案和密碼,卻不知道內部的 alias,Tomcat 就無法正確取得私鑰。透過 keytool -list 可以輕鬆查看 alias,確保設定正確。

希望這篇文章能幫助到正在為 Spotfire 設定 HTTPS 而苦惱的朋友。如果你有類似的經驗或問題,歡迎留言交流。


參考資料:TIBCO Support Article – How to configure HTTPS ... (連結如上)


本文由 Jayson Chan 原創,轉載請註明出處:https://freecodeinfosite.blogspot.com/

留言

這個網誌中的熱門文章

8-Bit Plane Slicing 位元平面分割 詳細解說 # 附 Python 程式碼

[實用工具]分租式單位電費單計算機