在 IBM WebSphere Application Server (WAS) 中,SSL 配置依賴密鑰管理器 (Key Manager) 提供私鑰與證書鏈以進行身分驗證與加密通訊。預設使用 IBMJSSE2 提供者的 IbmX509 演算法。當需整合硬體安全模組 (HSM)、自定義憑證存儲 (如資料庫、LDAP、雲端 KMS) 或實作特殊金鑰選擇邏輯時,需建立自定義密鑰管理器。本文詳細說明建立流程、作用域選擇與綁定 SSL 配置步驟。
javax.net.ssl.X509KeyManager,可選實作 com.ibm.wsspi.ssl.KeyManagerExtendedInfo 提供額外中繼資料。${WAS_HOME}/lib/ext 或共享庫 (Shared Library) 並關聯至應用/伺服器類載入器。Security → SSL certificate and key management → Key managers。Security → SSL certificate and key management → Manage endpoint security configuration → {Inbound | Outbound} → → Key managers 。Security → SSL certificate and key management → Key managers。CustomHSMKeyManager)。com.mycorp.security.HSMKeyManager)。確保 JAR 已正確部署且類可載入。SSL certificate and key management 主頁。SSL certificate and key management 頁面,選擇目標 SSL 配置範圍:
NodeDefaultSSLSettings)。CustomHSMKeyManager)。System administration → Nodes → 勾選節點 → Full Resynchronize。SystemOut.log 是否有 CWPKI0027I: Disabling default key manager 或自定義管理器初始化訊息。openssl s_client -connect host:port -debug 或 WAS 內建 SSLClient 測試雙向認證握手成功。ClassNotFoundException:JAR 未放入正確類載入器路徑,或共享庫未關聯。NoSuchAlgorithmException: IbmX509:自定義管理器未正確註冊為安全提供者,或演算法名稱不匹配。digitalSignature/keyEncipherment。若需在 Java 安全提供者清單中註冊 (供非 WAS 代碼如 JDBC、JMS、第三方庫使用):
java.security.Provider 子類,put("KeyManagerFactory.X509", "com.mycorp.security.HSMKeyManagerFactory")。java.security 檔案添加 security.provider.N=com.mycorp.security.HSMProvider 或程式碼動態 Security.insertProviderAt(new HSMProvider(), 1)。jvm.options 添加 -Djava.security.properties==${WAS_HOME}/properties/java.security.custom。但對於純 WAS 內部 SSL (HTTP 通道、RMI/IIOP、管理服務),僅需上述 SSL 配置綁定步驟,無需註冊為 JCE 提供者。
chooseClientAlias/chooseServerAlias 時,務必處理 null 返回 (無合適別名) 避免 NPE 導致握手失敗。自定義密鑰管理器是 WAS SSL 可擴展性的核心擴展點,正確建立與綁定流程,配合 HSM/雲端 KMS/硬體加密卡,能滿足金融級、政府級、合規要求嚴格的私鑰託管與雙向認證需求,是零信任架構中「機器身分」信任錨的關鍵實作。