配置非对称 XML 数字签名和/或 XML 加密的策略集和绑定

此过程描述如何配置消息级别 WS-Security 策略集和绑定,以将“非对称 XML 数字签名和加密”与特定于应用程序的绑定配合使用来签署 SOAP 消息以及对其进行加密。在此过程中,必须指定是否将同时签署请求与响应消息和/或对其进行加密。

开始之前

此项任务假设您要配置的服务提供程序和客户机位于 JaxWSServicesSamples 应用程序中。 有关如何获取和安装此应用程序的更多信息,请参阅“访问样本“主题。

应该在服务器上使用以下跟踪规范。这些规范使您能够对未来可能发生的任何配置问题进行调试。
*=info:com.ibm.wsspi.wssecurity.*=all:com.ibm.ws.webservices.wssecurity.*=all: 
com.ibm.ws.wssecurity.*=all: com.ibm.xml.soapsec.*=all: com.ibm.ws.webservices.trace.*=all: 
com.ibm.ws.websvcs.trace.*=all:com.ibm.ws.wssecurity.platform.audit.*=off:

关于此任务

此过程说明配置 WS-Security 策略集以使用“非对称 XML 数字签名和加密”WS-Security 约束时需要完成的操作。此过程还说明为客户机和提供程序配置“非对称 XML 数字签名和加密”特定于应用程序的定制绑定时需要完成的操作。

此过程中使用的密钥库随 WebSphere® Application Server 提供且已安装在所创建的每一个概要文件中。您可以在配置中直接使用 ${USER_INSTALL_ROOT} 变量以快捷地指向密钥库位置而无需使用标准路径。${USER_INSTALL_ROOT} 会解析为路径,例如 c:/WebSphere/AppServer/profiles/AppSrv01。

${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks
${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-receiver.ks
${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks
${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks
由于 JaxWSServicesSamples 的性质,要将策略集和绑定应用于此应用程序,请在管理控制台中单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples。 使用您自己的应用程序时,可以使用以下路径作为访问提供程序和客户机以连接策略集和绑定的替代方法:
  • 服务 > 服务提供程序 > (应用程序名称)
  • 服务 > 服务客户机 > (应用程序名称)
避免故障 避免故障: 请密切注意管理控制台中令牌使用者和生成器的名称。令牌的发起方和接收方可能不是您认为应该是的内容。表中的用途列指定令牌是使用者令牌还是生成器令牌。gotcha

过程

  1. 创建定制策略集。
    1. 在管理控制台中,单击服务 > 策略集 > 应用程序策略集
    2. 单击新建
    3. 指定名称=AsignEncPolicy
    4. 单击应用
    5. 在“策略”下面,单击添加 > WS-Security
  2. 编辑定制策略集。
    1. 在管理控制台中,单击 WS-Security > 主策略
      缺省情况下,该策略现在已具有以下配置:
      • 出站消息中的发送时间戳记
      • 入站消息中所需的时间戳记
      • 签署请求和响应(主体、WS-Addressing 头和时间戳记)
      • 对请求和响应进行加密(SOAP 安全性头中的主体和签名元素)

      如果这是您想要的配置,请单击应用,然后单击保存并继续执行到下一步。

      如果要更改此配置,请完成以下一个或多个子步骤。

    2. 可选: 同时从请求和响应中移除时间戳记。不能执行单向时间戳记。

      要同时从请求和响应中移除时间戳记,请取消选择将时间戳记包含在安全头中设置,然后单击应用

    3. 可选: 移除请求消息部件。
      1. 在“消息级别保护”下,单击请求消息部件保护
      2. 要移除请求加密部件,请单击 app_encparts,然后单击删除
      3. 要移除请求签署部件,请单击 app_signparts,然后单击删除
      4. 单击完成
    4. 可选: 移除响应消息部件。
      1. 在“消息级别保护”下,单击响应消息部件保护
      2. 要移除响应加密部件,请单击 app_encparts,然后单击删除
      3. 要移除响应签署部件,请单击 app_signparts,然后单击删除
      4. 单击完成
    5. 可选: 查看或更改请求中要签署或加密的部件。
      1. 在“消息级别保护”下,单击请求消息部件保护
      2. 要查看或更改请求加密部件,请单击 app_encparts,然后单击编辑

        部件中的元素页面会显示请求消息中将要加密的部件。您可以更新此页面中的设置以添加、更改或移除要加密的元素。缺省情况下,已配置了主体签名的 XPath 表达式

        如果要添加 UsernameToken、SAML 声明或其他元素的加密,请参阅“为 WS-Security 构建 XPath 表达式”

        完成更改后,请单击确定

      3. 要查看或更改请求签署部件,请单击 app_signparts,然后单击编辑

        部件中的元素页面会显示请求消息中将要签署的部件。您可以更新此页面中的设置以添加、更改或移除要签署的元素。缺省情况下,已配置了主体WS-Addressing 头的 QName时间戳记的 XPath 表达式

        如果将要使用 STR 取消引用变换(STR 变换)来签署安全性令牌,请添加以下 XPath 表达式:
        /*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' and local-name()='Envelope']
        /*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' and local-name()='Header']
        /*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' and local-name()='Security']
        /*[namespace-uri()='http://www.w3.org/2000/09/xmldsig#' and local-name()='Signature']
        /*[namespace-uri()='http://www.w3.org/2000/09/xmldsig#' and local-name()='KeyInfo']
        /*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' and local-name()='SecurityTokenReference']

        如果要签署其他元素(例如 BinarySecurityToken),请参阅“为 WS-Security 构建 XPath 表达式”

        完成更改后,请单击确定

      4. 单击完成
    6. 可选: 查看或更改响应中要签署或加密的部件。
      1. 在“消息级别保护”下,单击响应消息部件保护
      2. 要查看或更改响应加密部件,请单击 app_encparts,然后单击编辑

        部件中的元素页面会显示响应消息中将要加密的部件。您可以更新此页面中的设置以添加、更改或移除要加密的元素。缺省情况下,已配置了主体签名的 XPath 表达式

        完成更改后,请单击确定

      3. 要查看或更改响应签署部件,请单击 app_signparts,然后单击编辑

        部件中的元素页面会显示响应消息中将要签署的部件。您可以更新此页面中的设置以添加、更改或移除要签署的元素。缺省情况下,已配置了主体WS-Addressing 头的 QName时间戳记的 XPath 表达式

        完成更改后,请单击确定

      4. 单击完成
    7. 单击应用
    8. 保存配置。
  3. 配置客户机以使用 AsignEncPolicy 策略集。
    1. 在管理控制台中,单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务客户机策略集和绑定
    2. 选择 Web Service 客户机资源 (JaxWSServicesSamples)。
    3. 单击连接策略集
    4. 选择 AsignEncPolicy
  4. 为客户机创建定制绑定。
    1. 再次选择 Web Service 资源。
    2. 单击指定绑定
    3. 单击新建特定于应用程序的绑定以创建特定于应用程序的绑定。
    4. 指定绑定配置名称。

      名称:signEncClientBinding

    5. 单击添加 > WS-Security
    6. 如果主消息安全策略绑定面板未显示,请选择 WS-Security
  5. 配置客户机的定制绑定。
    1. 配置“证书库”。
      1. 选择密钥和证书
      2. 在“证书库”下,单击新建入站...
      3. 指定名称=clientCertStore
      4. 指定中间 X.509 证书=${USER_INSTALL_ROOT}/etc/ws-security/samples/intca2.cer
      5. 单击确定
    2. 配置“信任锚”。
      1. 在“信任锚”下,单击新建...
      2. 指定名称=clientTrustAnchor
      3. 单击外部密钥库
      4. 指定Full path=${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks
      5. 指定密码=client
      6. 单击确定
      7. 单击此页面导航中的 WS-Security
    3. 可选: 如果要签署请求消息,请完成以下操作。
      1. 配置签名生成器。
        1. 单击认证和保护 > AsymmetricBindingInitiatorSignatureToken0(签名生成器),然后单击应用
        2. 单击回调处理程序
        3. 指定密钥库=custom
        4. 单击定制密钥库配置,然后指定
          • Full path==${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks
          • 密钥库密码=client
          • 名称=client
          • 别名=soaprequester
          • 密码=client
        5. 单击确定,再单击确定,然后单击确定
      2. 配置请求签名信息。
        1. 单击 request:app_signparts,然后指定名称=clientReqSignInfo
        2. 在“签署密钥信息”下,单击新建,然后指定:
          • 名称=clientReqSignKeyInfo
          • 类型=Security Token reference
          • 令牌生成者或使用者名称=AsymmetricBindingInitiatorSignatureToken0
        3. 单击确定,然后单击应用
        4. 在“消息部件引用”下面,选择 request:app_signparts
        5. 单击编辑
        6. 在“变换算法”下面,单击新建
        7. 指定 URL=http://www.w3.org/2001/10/xml-exc-c14n#
        8. 单击确定,再单击确定,然后单击确定
    4. 可选: 如果要签署响应消息,请完成以下操作。
      1. 配置签名使用者。
        1. 单击 AsymmetricBindingRecipientSignatureToken0(签名使用者),然后单击应用
        2. 单击回调处理程序
        3. 在“证书”下,单击“证书库”单选按钮,然后指定:
          • 证书库=clientCertStore
          • 信任锚库=clientTrustAnchor
        4. 单击确定,再单击确定
      2. 配置响应签名信息。
        1. 单击 response:app_signparts,然后指定名称=clientRspSignInfo
        2. 单击应用
        3. 在“签署密钥信息”下,单击新建,然后指定:
          • 名称=clientReqSignKeyInfo
          • 令牌生成者或使用者名称=AsymmetricBindingInitiatorSignatureToken0
        4. 单击确定
        5. 在“签署密钥信息”下,单击 clientRspSignKeyinfo,然后单击添加
        6. 在“消息部件引用”下面,选择 response:app_signparts
        7. 单击编辑
        8. 在“变换算法”下面,单击新建
        9. 指定 URL=http://www.w3.org/2001/10/xml-exc-c14n#
        10. 单击确定,再单击确定,然后单击确定
    5. 可选: 如果要对请求消息进行加密,请完成以下操作。
      1. 配置加密生成器。
        1. 单击 AsymmetricBindingRecipientEncryptionToken0(加密生成器),然后单击应用
        2. 单击回调处理程序,然后指定密钥库=custom
        3. 单击定制密钥库配置,然后指定
          • Full path==${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks
          • 类型=JCEKS
          • 密钥库密码=storepass
          • 密钥名称=bob
          • 密钥别名=bob
        4. 单击确定,再单击确定,然后单击确定
      2. 配置请求加密信息。
        避免故障 避免故障: 必须将密钥信息引用的用途设置为密钥加密,该值是缺省值。数据加密用于对称加密。gotcha
        1. 单击 request:app_encparts,然后指定名称=clientReqEncInfo
        2. 单击应用
        3. 在“密钥信息”下,单击新建,然后指定
          • 名称=clientReqEncKeyInfo
          • 类型=Key_identifier
          • 令牌生成器或使用者名称=AsymmetricBindingRecipientEncryptionToken0
        4. 单击确定
        5. 在“密钥信息”下面,选择 clientReqEncKeyInfo,然后单击确定
    6. 可选: 如果要对响应消息进行加密,请完成以下操作。
      1. 配置加密使用者。
        1. 单击 AsymmetricBindingInitiatorEncryptionToken0(加密使用者),然后单击应用
        2. 单击回调处理程序,然后指定密钥库=custom
        3. 单击定制密钥库配置,然后指定
          • Full path==${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks
          • 类型=JCEKS
          • 密钥库密码=storepass
          • 密钥名称=alice
          • 密钥别名=alice
          • 密钥密码=keypass
        4. 单击确定,再单击确定
      2. 配置响应加密信息。
        避免故障 避免故障: 必须将密钥信息引用的用途设置为密钥加密,该值是缺省值。数据加密用于对称加密。gotcha
        1. 单击 response:app_encparts,然后指定名称=clientRspEncInfo
        2. 单击应用
        3. 在“密钥信息”下,单击新建,然后指定
          • 名称=clientRspEncKeyInfo
          • 令牌生成器或使用者名称=AsymmetricBindingRecipientEncryptionToken0
        4. 单击确定
        5. 在“密钥信息”下面,选择 clientRspEncKeyInfo
        6. 单击添加,然后单击确定
  6. 配置提供程序以使用 AsignEncPolicy 策略集。
    1. 在管理控制台中,单击应用程序 > 应用程序类型 > WebSphere 企业应用程序 > JaxWSServicesSamples > 服务提供程序策略集和绑定
    2. 选择 Web Service 提供程序资源 (JaxWSServicesSamples)。
    3. 单击连接策略集
    4. 选择 AsignEncPolicy
  7. 为提供程序创建定制绑定。
    1. 再次选择 Web Service 提供程序资源。
    2. 单击指定绑定
    3. 单击新建特定于应用程序的绑定以创建特定于应用程序的绑定。
    4. 指定绑定配置名称:signEncProviderBinding
    5. 单击添加 > WS-Security
    6. 如果主消息安全策略绑定面板未显示,请选择 WS-Security
  8. 为提供程序配置定制绑定。
    1. 配置“证书库”。
      1. 选择密钥和证书
      2. 在“证书库”下,单击新建入站...
      3. 指定:
        • 名称=providerCertStore
        • 中间 X.509 证书=${USER_INSTALL_ROOT}/etc/ws-security/samples/intca2.cer
      4. 单击确定
    2. 配置“信任锚”。
      1. 在“信任锚”下,单击新建...
      2. 指定名称=providerTrustAnchor
      3. 单击外部密钥库,然后指定:
        • Full path=${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-receiver.ks
        • 密码=server
      4. 单击确定,再单击此页面导航中的 WS-Security,然后单击认证和保护
    3. 可选: 如果要签署请求消息,请完成以下操作。
      1. 配置签名使用者。
        1. 单击 AsymmetricBindingInitiatorSignatureToken0(签名使用者),然后单击应用
        2. 单击回调处理程序
        3. 在“证书”下,单击证书库单选按钮,然后指定:
          • 证书库=providerCertStore
          • 信任锚库=providerTrustAnchor
        4. 单击确定
        5. 单击此页面导航中的认证和保护
      2. 配置请求签名信息。
        1. 单击 request:app_signparts,然后指定名称=reqSignInfo
        2. 单击应用
        3. 在“签署密钥信息”下,单击新建,然后指定:
          • 名称=reqSignKeyInfo
          • 令牌生成器或使用者
          • 名称=AsymmetricBindingInitiatorSignatureToken0
        4. 单击确定
        5. 在“签署密钥信息”下,单击 reqSignKeyinfo,然后单击添加
        6. 在“消息部件引用”下面,选择 request:app_signparts
        7. 单击编辑
        8. 在“变换算法”下,单击新建,然后指定 URL=http://www.w3.org/2001/10/xml-exc-c14n#
        9. 单击确定,再单击确定,然后单击确定
    4. 可选: 如果要签署响应消息,请完成以下操作。
      1. 配置签名生成器。
        1. 单击 AsymmetricBindingRecipientSignatureToken0(签名生成器),然后单击应用
        2. 单击回调处理程序 > 定制密钥库配置,然后指定:
          • Full path=${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-receiver.ks
          • 密钥库密码=server
          • 名称=server
          • 别名=soapprovider
          • 密码=server
        3. 单击确定,再单击确定,然后单击确定
      2. 配置响应签名信息。
        1. 单击 response:app_signparts,然后指定名称=rspSignInfo
        2. 在“签署密钥信息”下,单击新建,然后指定:
          • 名称=rspSignKeyInfo
          • 类型=Security Token reference
          • 令牌生成器或使用者
          • 名称=AsymmetricBindingRecipientSignatureToken0
        3. 单击确定,然后单击应用
        4. 在“消息部件引用”下面,选择 response:app_signparts
        5. 单击编辑
        6. 在“变换算法”下,单击新建,然后指定 URL=http://www.w3.org/2001/10/xml-exc-c14n#
        7. 单击确定,再单击确定,然后单击确定
    5. 可选: 如果要对请求消息进行加密,请完成以下操作。
      1. 配置加密使用者。
        1. 单击 AsymmetricBindingRecipientEncryptionToken0(加密使用者),然后单击应用
        2. 单击回调处理程序,然后指定密钥库=custom
        3. 单击定制密钥库配置,然后指定:
          • Full path==${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks
          • 类型=JCEKS
          • 密钥库密码=storepass
          • 密钥名称=bob
          • 密钥别名=bob
          • 密钥密码=keypass
        4. 单击确定,再单击确定,然后单击确定
      2. 配置请求加密信息。
        避免故障 避免故障: 必须将密钥信息引用的用途设置为密钥加密,该值是缺省值。数据加密用于对称加密。gotcha
        1. 单击 request:app_encparts,然后指定名称=reqEncInfo
        2. 单击应用
        3. 在“密钥信息”下,单击新建,然后指定:
          • 名称=reqEncKeyInfo
          • 类型=Key identifier
          • 令牌生成器或使用者
          • 名称=AsymmetricBindingRecipientEncryptionToken0
        4. 单击确定
        5. 在“密钥信息”下面,选择 reqEncKeyInfo
        6. 单击添加,然后单击确定
    6. 可选: 如果要对响应消息进行加密,请完成以下操作。
      1. 配置加密生成器。
        1. 单击 AsymmetricBindingInitiatorEncryptionToken0(加密生成器),然后单击应用
        2. 单击回调处理程序,然后指定密钥库=custom
        3. 单击定制密钥库配置,然后指定:
          • Full path==${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks
          • 类型=JCEKS
          • 密钥库密码=storepass
          • 密钥名称=alice
          • 密钥别名=alicee
        4. 单击确定,再单击确定,然后单击确定
      2. 配置请求加密信息。
        避免故障 避免故障: 必须将密钥信息引用的用途设置为密钥加密,该值是缺省值。数据加密用于对称加密。gotcha
        1. 单击 response:app_encparts,然后指定名称=rspEncInfo
        2. 单击应用
        3. 在“密钥信息”下,单击新建,然后指定:
          • 名称=rspEncKeyInfo
          • 令牌生成器或使用者
          • 名称=AsymmetricBindingInitiatorEncryptionToken0
        4. 单击确定
        5. 在“密钥信息”下面,选择 rspEncKeyInfo
        6. 单击确定
  9. 单击保存以保存配置更改。
  10. 重新启动客户机和提供程序。
    1. 停止客户机和提供程序。
    2. 重新启动客户机和提供程序。
  11. 测试服务。
    1. 将 Web 浏览器指向 JaxWSServicesSamples: http://localhost:9080/wssamplesei/demo
      避免故障 避免故障: 如果概要文件不在相同机器上或者端口不是 9080,请确保提供正确的主机名和端口。gotcha
    2. 选择消息类型同步回传
    3. 请确保未选择使用 SOAP 1.2
    4. 输入消息,然后单击发送消息
    样本应用程序应该回复 JAXWS==>Message

结果

现在,已将 JaxWSServicesSamples Web Service 应用程序配置成使用“非对称 XML 数字签名和加密”来保护 SOAP 请求和响应。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_general_policyset
文件名:twbs_general_policyset.html