![[17.0.0.3 and later]](../ng_v17003plus.gif)
SSL 配置的出站过滤器
可以配置 Liberty,以便可以通过使用出站 SSL 过滤器将多个 SSL 配置用于与主机的出站连接,或者用于与主机和端口的出站连接。
缺省情况下,Liberty 将缺省 SSL 配置用于入站 SSL 连接和出站 SSL 连接。用户还可以将 Liberty 配置为具有全局出站缺省值,从而允许您为出站缺省值配置一个 SSL 配置。有关如何为出站通信配置 SSL 设置的更多信息,请参阅配置用于出站通信的 SSL 设置。
从嵌套在 ssl 元素中的 outboundConnection 元素中配置了出站 SSL 过滤器。可以使用 outboundConnection 元素来指定用于指示出站 SSL 连接将连接至的主机或者主机和端口。
OutboundConnection 元素属性
属性 | 描述 | 缺省值 |
---|---|---|
主机 | 出站连接将连接至的主机。 | 无缺省值,但是用户需要提供主机名。 |
port | 出站连接将连接至的端口。 | 没有缺省值。如果未配置 port 属性,那么过滤器将与连接至目标服务器上的任何端口的主机名相匹配。 |
clientCertificate | 如果连接至将支持或需要客户机证书认证的服务器,那么出站 SSL 连接将使用此证书别名。 | 没有缺省值。如果缺少该属性,并且连接需要客户机证书认证,那么 Java 安全套接字扩展 (JSSE) 将选取已发送至服务器的证书。 |
- 主机名、短名称或者标准主机名。无论使用主机名、短名称还是标准主机名,都必须与用于出站连接的名称精确匹配。如果出站连接使用主机短名称,那么过滤器将仅与该短名称相匹配。
- 可以对 host 属性使用 *(星号)。如果使用了 *(星号)值,但是未指定任何端口,那么它意味着所有出站连接。如果在 sslDefault 元素中对 outboundSSLRef 属性指定了全局出站缺省值,那么会发生冲突。outboundSSLRef 属性优先。
- 主机字符串必须以 *. 开头,以与域名相匹配。如果在字符串中任何其他位置指定了 * 值,那么会将其视为文字 *。必须与要匹配的域的标准主机名建立出站连接。
端口必须与用于出站连接的端口精确匹配。如果未指定端口,那么所指定主机上的任何端口都与过滤器相匹配。
clientCertificate 属性是可选属性。如果出站 SSL 连接将连接至的服务器请求客户机证书,那么将使用该属性。如果服务器未请求证书,那么不会使用该属性。如果服务器请求证书,但是未指定任何证书,那么将连接至对父代 ssl 元素指定的 clientKeyAlias 属性。如果这两个属性都未配置,那么 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 属性所指定的称为 outboundSSLSettings 的出站缺省 SSL 配置。
- 示例 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 的证书。