为生成器绑定选择加密方法
要配置客户机以便对生成器绑定进行请求加密,必须指定客户机对 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 过程任务。