为生成器绑定选择加密方法
要配置客户机以便对生成器绑定进行请求加密,必须指定客户机对 SOAP 消息进行加密时使用的加密方法。
开始之前
完成这些步骤前,请参阅 XML 加密信息以熟悉如何对 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。
要点: 您的产地国对加密软件的进口、拥有、使用或再次出口到其他国家可能有一些限制。下载或使用未限制的策略文件之前,必须检查您的国家或地区的法律、规章以及对加密软件进行进口、拥有、使用和再次出口的相关政策,从而确定是否可以使用该文件。
用法类型 | 描述 |
---|---|
数据加密 | 指定用于对数据进行加密和解密的算法 URI。以固定大小,多个八位字节块对数据进行加密和解密。 |
密钥加密 | 指定用于加密和解密加密密钥的算法 URI。 |
数据加密
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 支持以下预先配置的密钥加密算法:
密钥加密名称 | 算法 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 过程完成下列高级步骤,以指定在配置客户机进行请求加密时要使用的加密方法:
过程
结果
示例
以下示例提供了样本 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 过程任务。