4.2. 密码套件过滤器
概述 复制链接链接已复制到粘贴板!
在典型的应用程序中,您通常希望将可用密码套件的列表限制为 JSSE 供应商支持的密码的子集。
通常,您应该使用 sec:cipherSuitesFilter
元素,而不是 sec:cipherSuites
元素来选择您要使用的密码套件。
不建议使用 sec:cipherSuites
元素,因为它具有非直观语义:您可以使用它要求加载的安全供应商至少支持列出的密码套件。但是,载入的安全供应商可能会支持比指定的加密套件更多的加密套件。因此,当您使用 sec:cipherSuites
元素时,在运行时支持哪些密码套件并不明确。
命名空间 复制链接链接已复制到粘贴板!
表 4.1 “用于配置 Cipher Suite 过滤器的命名空间” 显示本节中引用的 XML 命名空间:
prefix | 命名空间 URI |
---|---|
| |
| |
|
sec:cipherSuitesFilter 元素 复制链接链接已复制到粘贴板!
您可以使用 sec:cipherSuitesFilter
元素定义密码套件过滤器,可以是 http:tlsClientParameters
元素或 httpj:tlsServerParameters
元素的子级。典型的 sec:cipherSuitesFilter
元素在 例 4.1 “sec 的结构:cipherSuitesFilter Element” 中显示概要结构。
例 4.1. sec 的结构:cipherSuitesFilter Element
语义 复制链接链接已复制到粘贴板!
以下语义规则适用于 sec:cipherSuitesFilter
元素:
如果
sec:cipherSuitesFilter
元素没有出现在端点配置中(即,它 没有包括在 相关http:conduit
或httpj:engine-factory
元素中),则会使用以下默认过滤器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果
sec:cipherSuitesFilter
元素出现在端点的配置中,则默认 排除所有 密码套件。 -
要包含密码套件,请在
sec:cipherSuitesFilter
元素中添加sec:include
子元素。sec:include
元素的内容是一个正则表达式,它与一个或多个密码套件名称匹配(例如,请参阅 “SunJSSE 支持的密码套件”一节中的密码套件名称)。 要进一步重新定义所选密码套件集合,您可以在
sec:cipherSuitesFilter
元素中添加sec:exclude
元素。sec:exclude
元素的内容是一个正则表达式,与当前包含的集合中的零或更多密码套件名称匹配。注意有时,显式排除当前未包含的密码套件,以便根据意外包含不必要的密码套件来更好地验证。
正则表达式匹配 复制链接链接已复制到粘贴板!
在 sec:include
和 sec:exclude
元素中显示的正则表达式的 grammar 由 Java 正则表达式实用程序 java.util.regex.Pattern
定义。有关 grammar 的详细信息,请参阅 Java 参考指南 http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html。
client conduit 示例 复制链接链接已复制到粘贴板!
以下 XML 配置显示了将密码套件过滤器应用到远程端点 {
WSDLPortNamespace}
PortName 的客户端示例。每当客户端尝试打开到此端点的 SSL/TLS 连接时,它会将可用的密码套件限制为 sec:cipherSuitesFilter
元素选择的集合。