![[17.0.0.3 以及更新版本]](../ng_v17003plus.gif)
SSL 配置的出埠過濾器
您可以配置 Liberty,以便使用出埠 SSL 過濾器,將多項 SSL 配置用於指向某部主機(或主機與埠)的出埠連線。
依預設,Liberty 會將預設 SSL 配置同時用於入埠和出埠 SSL 連線。使用者也可以配置 Liberty,以具有廣域出埠預設值,讓您可以配置一項 SSL 配置,以用於出埠預設值。如需如何配置 SSL 設定以用於出埠通訊的相關資訊,請參閱配置用於出埠通訊的 SSL 設定。
出埠 SSL 過濾器是在 ssl 元素中的巢狀 outboundConnection 元素上配置。您可以使用 outboundConnection 元素,來指定主機(或主機與埠),以指出出埠 SSL 連線的目標。
OutboundConnection 元素的屬性
屬性 | 說明 | 預設值 |
---|---|---|
host | 出埠連線所指向的主機。 | 無預設值,但是使用者需要提供主機名稱。 |
port | 出埠連線所指向的埠。 | 沒有預設值。如果未配置 port 屬性,則過濾器會比對找出指向目的地伺服器上之任何埠的主機名稱。 |
clientCertificate | 如果連線指向支援或需要用戶端憑證鑑別的伺服器,出埠 SSL 連線會使用這個憑證別名。 | 沒有預設值。如果遺漏屬性,且連線需要用戶端憑證鑑別,則 Java Secure Socket Extension (JSSE) 會挑選傳送給伺服器的憑證。 |
- 主機名稱、簡稱或完整的主機名稱。不論使用何者,都必須與出埠連線所用的完全相符。如果出埠連線使用主機簡稱,則過濾器只會比對找出簡稱。
- *(星號)可用於 host 屬性。如果使用 * (星號)值,且沒有指定埠,則代表所有的出埠連線。如果在 sslDefault 元素中使用 outboundSSLRef 屬性指定了廣域出埠預設值,則會發生衝突。outboundSSLRef 屬性會優先採用。
- 主機字串的開頭必須是 *. 以符合網域名稱。如果將 * 值指定於字串中的其他任何位置,則會視為文字 *。必須以完整的主機名稱來建立出埠連線,網域才會符合。
埠必須與用於出埠連線的埠完全相符。如果沒有指定埠,則凡是指定主機上的埠都符合過濾器。
clientCertificate 為選用屬性。如果出埠 SSL 連線所指向的伺服器要求用戶端憑證,則會使用它。如果伺服器沒有要求憑證,則不會使用它。如果伺服器要求憑證,卻沒有指定,則連線會查看 clientKeyAlias 屬性,這個屬性指定於母項 ssl 元素上。如果這些屬性都未配置,則 JSSE 會選擇用於連線的憑證。
出埠 SSL 的優先順序
- 直接參照
- 如果特性直接要求使用 SSL 配置,則會使用該配置。
- 符合 outboundConnection 過濾器
- 如果沒有要求直接參照,則會嘗試使用 outboundConnection 元素過濾器來比對找出出埠呼叫。
- 出埠預設 SSL 配置
- 如果沒有符合任何出埠 SSL 過濾器,則會使用 outboundSSLRef 屬性中指定的 SSL 配置。
- 預設 SSL 配置
- 如果所配置的出埠預設值都不存在,則會使用預設 SSL 配置。 預設 SSL 配置是 defaultSSLConfig 配置,或是 sslDefault 元素之 sslRef 屬性上指定的配置。
出埠過濾器中的衝突
如果過濾器之間存在衝突,則會在日誌中撰寫一則訊息,指出所使用的 SSL 配置。此情況是可能發生的,比方說,如果多個 outboundConnection 元素使用相同的主機和埠,就會發生此情況。
如果指定了 outboundSSLRef 屬性,且有一個過濾器使用主機值 * 但沒有指定任何埠,則會使用 outboundSSLRef 屬性所指定的配置。
配置範例
<featureManager>
<feature>transportSecurity-1.0</feature>
</featureManager>
- 範例 1.
<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" /> <keyStore id="defaultKeyStore" location="key.jks" type="JKS" password="yourpassword"/> <keyStore id="DefaultTrustStore" location="trust.jks" type="JKS" password="yourpassword" /> <ssl id="alternateSSLSettings" keyStoreRef="alternateKeyStore" trustStoreRef="alternateTrustStore" > <outboundConnection host="server99.ibm.com" port="9443"/> </ssl> <keyStore id="alternateKeyStore" location="${server.config.dir}/alternateServerKeyFile.jks" type="JKS" password="yourpassword" /> <keyStore id="alternateTrustStore" location="${server.config.dir}/alternateServerTrustFile.jks" type="JKS" password="yourpassword" />
在這項配置中,當出埠 SSL 連線指向伺服器 server99.ibm.com 主機和埠 9443 時,會使用稱為 alternateSSLSettings 的 SSL 配置。其他所有出埠 SSL 連線則使用預設 SSL 配置 defaultSSLConfig。
- 範例 2.
<sslDefault outboundSSLRef="outboundSSLSettings"/> <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" > <outboundConnection host="otherhost"/> </ssl> <keyStore id="defaultKeyStore" location="key.jks" type="JKS" password="yourpassword"/> <keyStore id="DefaultTrustStore" location="trust.jks" type="JKS" password="yourpassword" /> <ssl id="alternateSSLSettings" keyStoreRef="alternateKeyStore" trustStoreRef="alternateTrustStore" > <outboundConnection host="server99.ibm.com" port="8020"/> <outboundConnection host="server99.ibm.com" port="9443"/> </ssl> <keyStore id="alternateKeyStore" location="${server.config.dir}/alternateServerKeyFile.jks" type="JKS" password="yourpassword" /> <keyStore id="alternateTrustStore" location="${server.config.dir}/alternateServerTrustFile.jks" type="JKS" password="yourpassword" /> <ssl id="outboundSSLSettings" keyStoreRef="outboundKeyStore" trustStoreRef="outboundTrustStore" > </ssl> <keyStore id="outboundKeyStore" location="${server.config.dir}/outboundKeyFile.jks" password="yourpassword" /> <keyStore id="outboundTrustStore" location="${server.config.dir}/outboundTrustFile.jks" password="yourpassword" />
在這項配置中,指向 otherhost 主機上之任何埠的出埠 SSL 連線會使用稱為 defaultSSLConfig 的 SSL 配置。指向 server99.ibm.com 主機和埠 9443 或 8020 的出埠連線會使用稱為 alternateSSLSettings 的 SSL 配置。其他所有出埠 SSL 連線則使用 outboundSSLRef 屬性所指定的出埠預設 SSL 配置,稱為 outboundSSLSettings。
- 範例 3.
<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" clientKeyAlias="default"> <outboundConnection host="server99.ibm.com" port="9443" clientCertificate="special"/> </ssl> <keyStore id="defaultKeyStore" location="key.jks" type="JKS" password="yourpassword"/> <keyStore id="DefaultTrustStore" location="trust.jks" type="JKS" password="yourpassword" />
在這項配置中,出埠 SSL 連線使用稱為 defaultSSLConfig 的預設 SSL 配置。如果出埠 SSL 連線指向 server99.ibm.com 主機,並要求用戶端憑證,則使用稱為 special 的憑證。其他所有要求用戶端憑證的出埠連線則使用稱為 default 的憑證。