我想用服务器的公钥加密一条 SOAP 消息,并用客户端的私钥对同一条消息进行签名。理想情况下,用于签名和加密的密钥是不同的。
指的是 WSO2 团队的 apache Rampart 示例。给出的这样一个示例 Rampart 配置是:
RampartConfig rampartConfig = new RampartConfig();
Properties merlinProp = new Properties();
merlinProp.put("org.apache.ws.security.crypto.merlin.keystore.type", "JKS");
merlinProp.put("org.apache.ws.security.crypto.merlin.file","C:/Documents and Settings/abdul.mujeeb/workspace/Axis2Clients/src/certs/oasis.jks");
merlinProp.put("org.apache.ws.security.crypto.merlin.keystore.password", "password");
CryptoConfig sigCryptoConfig = new CryptoConfig();
sigCryptoConfig.setProvider("org.apache.ws.security.components.crypto.Merlin");
sigCryptoConfig.setProp(merlinProp);
CryptoConfig encrCryptoConfig = new CryptoConfig();
encrCryptoConfig.setProvider("org.apache.ws.security.components.crypto.Merlin");
encrCryptoConfig.setProp(merlinProp);
rampartConfig.setUserCertAlias("alice");
rampartConfig.setEncryptionUser("bob1");
rampartConfig.setSigCryptoConfig(sigCryptoConfig);
rampartConfig.setEncrCryptoConfig(encrCryptoConfig);
rampartConfig.setPwCbClass("com.rolta.axis2.client.UserNameCallbackHandler");
示例 no where 指定用于加密消息的服务器公钥。
上面例子中的几个问题:
1)rampartConfig.setEncryptionUser() 函数代表什么?如何使用服务器的公钥加密 SOAP 消息?
2)rampartConfig.setUserCertAlias() 的作用是什么?签约?加密或两者兼而有之?
谢谢。