0

我想用服务器的公钥加密一条 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() 的作用是什么?签约?加密或两者兼而有之?

谢谢。

4

1 回答 1

0

您提供的是如何以编程方式设置壁垒配置。这里的set方法等价于rampart配置中的参数。所有这些参数都列在了壁垒配置指南中。

可以在此博客文章中找到对这两个属性的更有用的解释。简而言之,

encryptionUser- 用于加密消息的公钥的别名。公钥证书在此别名下的密钥库中可用。

userCertAlias- 用于从 CallbackHandler 中检索对应私钥的密码进行签名的别名。

于 2013-07-12T12:14:50.080 回答