Liberty 中啟用 SSL 通訊

如果要在 Liberty 中啟用 SSL 通訊,有一組最基本的 SSL 配置選項。會假設大部分的 SSL 選項需要一些金鑰儲存庫配置資訊。

關於這項作業

SSL 用戶端鑑別是在連線信號交換期間,利用 SSL 憑證來進行。 SSL 信號交換是一系列透過 SSL 通訊協定來交換的訊息,用來進行連線特定的保護協議。 在信號交換期間,安全伺服器會要求用戶端送回憑證或憑證鏈,以進行鑑別。 如果要在 Liberty 中啟用 SSL,請將 ssl-1.0 Liberty 特性連同用於鑑別的金鑰儲存庫資訊程式碼,一起新增到配置根文件檔案 server.xml 中。

依預設,配置根文件檔的路徑和檔名是 path_to_liberty/wlp/usr/servers/server_name/server.xml path_to_libertyLiberty 在作業系統上的安裝位置,而 server_name 是伺服器的名稱。不過,您可以變更路徑。請參閱 自訂 Liberty 環境

程序

  1. server.xml 檔中啟用 ssl-1.0 Liberty 特性。
    <featureManager>
        <feature>ssl-1.0</feature>
    </featureManager>
    註: 如果需要應用程式安全,且要將安全資訊重新導向到安全的埠,您必須將 appSecurity-2.0 Liberty 特性新增至 server.xml 檔。

    當啟用 ssl-1.0 特性時,Liberty 伺服器會根據預設 SSL 配置建立 SSLContext,並呼叫 SSLContext.setDefault() Java API,使該 SSLContext 成為伺服器預設值。這會使 Liberty 伺服器的預設 SSLContext,成為程序的預設 SSLContext。不論何者讓 Java API 呼叫了 SSLContext.getDefault(),方法就會傳回 Liberty SSLContext。同樣情況適用於 SSLSocketFactory.getDefault() Java API,而會傳回預設 SSLContext 中的預設 Socket Factory。

  2. [17.0.0.3 以及更新版本]可以改為啟用 SSL 通訊,作法是在 server.xml 檔中新增 transportSecurity-1.0 Liberty 特性。
    <featureManager>
        <feature>transportSecurity-1.0</feature>
    </featureManager>

    transportSecurity-1.0 特性會取代 ssl-1.0 特性,並多了 ssl-1.0 特性未隨附的功能。您可以指定 SSL 配置來作為出埠預設值,以及在 SSL 配置上設定過濾器,以便根據目的地主機和埠,將該 SSL 配置用於某項出埠 SSL 呼叫。如需出埠 SSL 選項的相關資訊,請參閱配置用於出埠通訊的 SSL 設定SSL 配置的出埠過濾器

    當啟用 transportSecurity-1.0 特性時,Liberty 伺服器會設定一個使用 Java 安全內容 ssl.SocketFactory.provider 的自訂 SSL Socket Factory。當啟用 transportSecurity-1.0 特性時,會自動設定這個安全內容。在您使用 transportSecurity-1.0 特性時,程序的預設 SSLContext 會成為 Java Secure Socket Extension (JSSE) 的預設 SSLContext。當呼叫 SSLContext.getDefault() 時,會傳回 JSSE 的預設環境定義 SSLContext。當呼叫 SSLSocketFactory.getDefault() 時,會傳回 SSLSocketFactory,這個 SSLSocketFactory 是基於使用 Liberty SSLContext 的 Liberty 伺服器自訂 Socket Factory 提供者。

    只有在指定 transportSecurity-1.0 特性時,才會將 outboundSSLRef 屬性和 outboundConnection 元素用於出埠 SSL 連線。如果指定 ssl-1.0 特性,而未指定 transportSecurity-1.0,則會忽略 outboundSSLRef 屬性和 outboundConnection 元素。

    註: 由於 JDK 的本質,如果您從 ssl-1.0 特性變更為 transportSecurity-1.0 特性,或從 transportSecurity-1.0 特性變更為 ssl-1.0 特性,則必須重新啟動 Liberty 伺服器,才能使用該特性的完整功能。
  3. 新增金鑰儲存庫服務物件項目到 server.xml 檔中。 keyStore 元素稱為 defaultKeyStore,其中含有金鑰儲存庫密碼。 這個密碼可以用明碼或編碼的方式來輸入。securityUtility encode 選項可用來進行密碼編碼。
    <keyStore id="defaultKeyStore" password="yourPassword" />
    最低配置中的 SAF 金鑰環範例:
    <keyStore id="defaultKeyStore" location="safkeyring:///WASKeyring"
              type="JCERACFKS" password="password" fileBased="false"
              readOnly="true" />

    您必須先設定 RACF® 金鑰環,才能配置它們以供 Liberty 伺服器使用。伺服器不會建立憑證並將其新增至 RACF。

    您也可以延伸最低 SSL 配置的單一金鑰儲存庫項目來包括位置和類型。
    <keyStore id="defaultKeyStore" location="myKeyStore.p12" password="yourPassword" type="PKCS12"/>

    此配置是建立 SSL 配置的最小需求。如果在 SSL 起始設定期間,金鑰儲存庫和憑證不存在,伺服器就會在這項配置中建立它們。所提供的密碼長度必須至少 6 個字元。金鑰儲存庫會假設為 JKS 金鑰儲存庫,其稱為 key.jks,並位於伺服器的 home/resources/security 目錄中。如果該檔案不存在,伺服器會為您建立。如果伺服器建立該金鑰儲存庫檔,就也會在其中建立憑證。該憑證是有效期限為 365 天的自簽憑證,其 subjectDN 的 CN 值是執行伺服器機器的主機名稱,並具有簽章演算法 SHA256withRSA。

    註: 如果使用群體控制器不切實際(可能是只有一或兩部 Liberty 伺服器),則可以使用自簽憑證,來限制能連接至 Liberty 成員伺服器的用戶端數目。建議在 Liberty 伺服器前端使用 IHS 伺服器,在此情況下,可以使用適當的 CA 簽章憑證連同 CN 白名單,來控制哪些用戶端可以連接至 IHS。對於 IHS 與 Liberty 成員伺服器之間的授信通道,可利用自簽憑證來維護。

指示主題類型的圖示 作業主題

檔名:twlp_sec_ssl.html