为生成器绑定选择加密方法

要配置客户机以便对生成器绑定进行请求加密,必须指定客户机对 SOAP 消息进行加密时使用的加密方法。

开始之前

完成这些步骤前,请参阅 XML 加密信息以熟悉如何对 SOAP 消息进行加密和解密。

要指定客户机对 SOAP 消息进行加密时使用的算法方法,请完成下列任务:
  • 使用 WSSEncryption API 来配置数据加密算法和密钥加密算法方法。
  • 根据需要使用 WSSEncryptPart API 来配置变换算法方法。缺省值是无变换算法。

关于此任务

某些与加密相关的定义基于 XML-Encryption 规范。以下信息定义了一些与数据加密相关的术语:

数据加密方法算法
数据加密算法指定数据加密方法的算法统一资源标识 (URI)。此算法以固定大小,多个八位字节块对数据进行加密和解密。

缺省情况下,Java™ 密码术扩展 (JCE) 与强度受限或有限的密码一起提供。要使用 192 位和 256 位高级加密标准 (AES) 加密算法,必须应用无限制的权限策略文件。

对于 AES256-cbc 和 AES192-cbc 算法,必须从以下 Web 站点下载不受限制的 Java™ 密码术扩展 (JCE) 策略文件:http://www.ibm.com/developerworks/java/jdk/security/index.html

密钥加密方法算法
密钥加密算法指定对密钥(用于对数据进行加密)进行加密的方法的算法统一资源标识 (URI)。此算法表示对加密和解密密钥指定的公用密钥加密算法。

缺省情况下,RSA-OAEP 算法使用 SHA1 消息摘要算法来在加密操作期间计算消息摘要。(可选)可通过指定密钥加密算法属性来使用 SHA256 或 SHA512 消息摘要算法。

该属性名为:com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod。属性值是下列其中一个摘要方法 URI:
  • http://www.w3.org/2001/04/xmlenc#sha256
  • http://www.w3.org/2001/04/xmlenc#sha512

缺省情况下,RSA-OAEP 算法使用空字符串来作为 OAEPParams 的可选编码八位元字符串。可通过指定密钥加密算法属性来提供显式的编码八位元字符串。对于属性名,可以指定 com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams。属性值是八位元字符串的基本 64 位编码值。

要点: 只能在生成者端设置这些摘要方法和 OAEPParams 属性。在使用者端,会从入局 SOAP 消息中读取这些属性。

要获取 KW-AES256 和 KW-AES192 密钥加密算法,必须从以下 Web 站点下载非受限 JCE 策略文件:http://www.ibm.com/developerworks/java/jdk/security/index.html

要点: 您的产地国对加密软件的进口、拥有、使用或再次出口到其他国家可能有一些限制。下载或使用未限制的策略文件之前,必须检查您的国家或地区的法律、规章以及对加密软件进行进口、拥有、使用和再次出口的相关政策,从而确定是否可以使用该文件。
表 1. 加密用法类型. 加密用法类型描述加密方法。
用法类型 描述
数据加密 指定用于对数据进行加密和解密的算法 URI。以固定大小,多个八位字节块对数据进行加密和解密。
密钥加密 指定用于加密和解密加密密钥的算法 URI。

数据加密

WebSphere® Application Server 支持以下预配置的数据加密算法:

表 2. 数据加密算法. 这些预配置加密算法受 WebSphere Application Server 支持。
数据加密名称 算法 URI
WSSEncryption.AES128(缺省值) 数据加密算法 AES 128 的 URI:http://www.w3.org/2001/04/xmlenc#aes128-cbc
WSSEncryption.AES192 数据加密算法 AES 192 的 URI:http://www.w3.org/2001/04/xmlenc#aes192-cbc
WSSEncryption.AES256 数据加密算法 AES 256 的 URI:http://www.w3.org/2001/04/xmlenc#aes256-cbc
WSSEncryption.TRIPLE_DES 数据加密算法 3DES 的 URI:http://www.w3.org.2001/04/xmlenc#tripledes-cbc

密钥加密

WebSphere Application Server 支持以下预先配置的密钥加密算法:

表 3. 密钥加密算法. 这些预配置加密算法受 WebSphere Application Server 支持。
密钥加密名称 算法 URI
WSSEncryption.KW_AES128 密钥加密算法密钥合并 AES 128 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes128
WSSEncryption.KW_AES192 密钥加密算法密钥合并 AES 192 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes192
限制: 如果要让所配置的应用程序与基本安全概要文件 (BSP) 一致,请不要使用 192 位密钥加密算法。
WSSEncryption.KW_AES256 密钥加密算法密钥合并 AES 256 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes256
WSSEncryption.KW_RSA_OAEP(缺省值) 密钥加密算法密钥合并 RSA OAEP 的 URI:http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p
WSSEncryption.KW_RSA15 密钥加密算法密钥合并 RSA 1.5 的 URI:http://www.w3.org/2001/04/xmlenc#rsa-1_5
WSSEncryption.KW_TRIPLE_DES http://www.w3.org/2001/04/xmlenc#kw-tripledes

要配置加密功能和加密部件算法方法,请使用 WSSEncryption API,或者通过管理控制台来配置策略集。

注: 策略集不支持对称密钥加密。如果使用 WSS API 进行对称密钥加密,那么将无法与使用策略集的 Web Service 端点进行互操作。

WSS API 过程完成下列高级步骤,以指定在配置客户机进行请求加密时要使用的加密方法:

过程

  1. 使用 WSSEncryption API 添加必需的数据加密算法。 数据加密算法用于对 SOAP 消息的部件进行加密或解密。数据加密算法指定数据加密方法的算法统一资源标识 (URI)。

    客户机生成器配置必须与提供程序使用者的配置匹配。

    缺省数据加密算法是 AES 128。数据加密名称是 AES128,而数据加密算法的 URI 是 http://www.w3.org/2001/04/xmlenc#aes128-cbc。WebSphere Application Server 支持以下预配置的数据加密算法:

    • AES 128:http://www.w3.org/2001/04/xmlenc#aes128-cbc

      AES 128 算法是缺省数据算法方法。

    • AES 192:http://www.w3.org/2001/04/xmlenc#aes192-cbc

      如果要让所配置的应用程序与基本安全概要文件 (BSP) 一致,请不要使用 192 位密钥加密算法。

      要使用此 AES 192-cbc 算法,您必须从以下 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/index.html 下载非受限的 Java 密码术扩展 (JCE) 策略文件。

    • AES 256:http://www.w3.org/2001/04/xmlenc#aes256-cbc

      要使用此 AES 256-cbc 算法,您必须从以下 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/index.html 下载非受限的 Java 密码术扩展 (JCE) 策略文件。

    • TRIPLEDES:http://www.w3.org/2001/04/xmlenc#tripledes-cbc
  2. 根据需要更改 WSSEncryption API 方法以指定其他数据加密算法。 例如,可添加以下代码以便将缺省 AES 128 算法更改为三重 DES 算法:
    // Default data encryption algorithm: AES128
    WSSEncryption enc = factory.newWSSEncryption(x509t); 
       enc.setEncryptionMethod(EncryptionMethod.TRIPLEDES_CBC);
    gencont.add(enc); 
  3. 使用 WSSEncryption API 添加必需的密钥加密算法。 密钥加密算法用于加密密钥,该密钥用于加密 SOAP 消息中的消息部件。 如果未对加密密钥(用于对消息部件进行加密的密钥)进行加密,那么解密 API 将选择 False 以与加密密钥匹配。

    客户机生成器配置必须与提供程序使用者的配置匹配。

    缺省密钥加密算法值是密钥合并 RSA OAP。密钥加密名称是 KW_RSA_OAEP,而密钥加密算法的 URI 是 http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p。WebSphere Application Server 支持以下预先配置的密钥加密算法:

    • KW AES128:http://www.w3.org/2001/04/xmlenc#kw-aes128
    • KW AES192:http://www.w3.org/2001/04/xmlenc#kw-aes192

      要使用此密钥合并 AES 192 算法,必须从以下 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/index.html 下载非受限的 Java 密码术扩展 (JCE) 策略文件。

      如果要让所配置的应用程序与基本安全概要文件 (BSP) 一致,请不要使用 192 位密钥加密算法。

      KW AES 256:http://www.w3.org/2001/04/xmlenc#kw-aes256

      要使用此密钥合并 AES 256-cbc 算法,必须从以下 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/index.html 下载非受限的 Java 密码术扩展 (JCE) 策略文件。

    • KW RSA OAEP:http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p.

      KW RSA OAEP 算法是缺省密钥算法方法。

      当通过软件开发包 (SDK) V1.4 运行时,受支持密钥传输算法列表不包括此算法。通过 SDK V1.5 运行时,受支持密钥传输算法列表将包含此算法。有关更多信息,请参阅http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

    • KW RSA15:http://www.w3.org/2001/04/xmlenc#rsa-1_5
    • KW 三重 DES:http://www.w3.org/2001/04/xmlenc#kw-tripledes
    注: 对于 Web Service 安全性对话,WSSEncryption API 可指定其他与密钥相关的信息,例如:
    • algorithmName
    • keyLength

结果

如果存在错误情况,那么将提供 WSSException。如果成功,此 API 将调用 WSSGenerationContext.process(),生成 WS-Security 头,然后使用 Web Service 安全性来保护 SOAP 消息。

示例

以下示例提供了样本 WSS API 代码,这段代码使用 WSSEncryption.setEncryptionMethod() 和 WSSEncryption.setKeyEncryptionMethod()。

// Get the message context
   Object msgcontext = getMessageContext();

// Generate the WSSFactory instance
   WSSFactory factory = WSSFactory.getInstance();

// Generate the WSSGenerationContext instance
   WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Generate callback handler
   X509GenerateCallbackHandler callbackHandler = new 
       X509GenerateCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(), 
                                   "bob", 
                                   null, 
                                   "CN=Bob, O=IBM, C=US", 
                                   null);

// Generate the security token used for encryption
   SecurityToken token = factory.newSecurityToken(X509Token.class , callbackHandler);

// Generate WSSEncryption instance 
   WSSEncryption enc = factory.newWSSEncryption(token);

// Set the data encryption method 
// DEFAULT: WSSEncryption.AES128
      enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);

// Set the key encryption method
// DEFAULT: WSSEncryption.KW_RSA_OAEP
      enc.setEncryptionMethod(WSSEncryption.KW_RSA15);

// Add the WSSEncryption to the WSSGenerationContext
   gencont.add(enc);

// Generate the WS-Security header
gencont.process(msgcontext);

下一步做什么

接下来,如果要添加变换算法,请检查 WSSEncryptPart API 过程任务。


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



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