我想使用Apache CXF和WSS4J签署Web服务请求。据我所知,我需要一个包含我想用于签名的证书的JKS商店。 需要能够使用Windows证书存储中的X.509证书。在签署Web服务请求时,应从商店中读取证书。 我知道如何访问商店并获得证书。但是我怎样才能用它来签名,而不是从我自己的JKS商店获得证书?Web服务安全和Windows证书
回答
KeyStore不一定是JKS之一。您可以编写自己的JCA提供程序并实现KeyStoreSpi,并让它访问Windows证书存储。
看看this,它解释了如何使用Windows密钥库。然后你必须配置CXF来使用该密钥库。
如何告诉CXF使用该商店? – tobiasbayer 2010-12-03 10:43:03
似乎没有任何好的方法来做到这一点。这里有一个使用Java-COM桥接的建议:http://objectmix.com/java/76948-accessing-certificates-windows-system-stores-java.html。这个答案表明你将陷入JNI地狱:https://lists.owasp.org/pipermail/owasp-webscarab/2010-October/001123.html – rtperson 2010-12-27 14:22:33
刚发现有可能使用MerlinDevice
类来实现。 这是它如何做:
1)WSS4JOutInterceptor
配置属性:
Map<String,Object> outProps = new HashMap<String,Object>();
outProps.put(WSHandlerConstants.ACTION, "Signature");
outProps.put(WSHandlerConstants.USER, "Friendly_name_of_your_certificate");
outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, StupidCallback.class.getName());
outProps.put(WSHandlerConstants.SIG_PROP_FILE, "client_sign.properties");
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
2)client_sign.properties
文件看起来是这样的:
org.apache.ws.security.crypto.provider=org.apache.wss4j.common.crypto.MerlinDevice
keystore.provider=SunMSCAPI
cert.provider=SunMSCAPI
keystore.type=Windows-MY
truststore.type=Windows-ROOT
3)又StupidCallback
刚刚返回常量字符串作为密码(其值并不重要):
public class StupidCallback implements CallbackHandler
{
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
{
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword("password");
}
}
就是这样。
- 1. 理解服务器安全证书
- 2. MSMQ和Web服务:安全
- 3. WCF Web服务和SSL和证书
- 4. Web服务安全
- 5. Windows服务安全
- 6. IIS和Web服务器SSL证书
- 7. 安全证书
- 8. WCF,安全和证书
- 9. 服务结构,AD和客户端证书安全
- 10. WCF服务,SSL,邮件安全和数字证书
- 11. 从Windows服务发送XML到Web服务器 - 证书和封装
- 12. .NET Windows控制台验证到PHP的Web服务器和消费REST安全
- 13. SOAP的Web服务和春季安全
- 14. 安全的ASP.NET Web服务和PHP
- 15. GET请求,安全性和Web服务
- 16. Web服务的安全性(REST和SOAP)
- 17. $ _ POST安全PHP web服务
- 18. PHP nusoap web服务安全
- 19. .NET Web服务安全性
- 20. Web服务安全java
- 21. Web服务安全问题
- 22. 单击安全web服务
- 23. web服务安全头
- 24. SSRS Web服务安全
- 25. ASP.NET Web服务安全
- 26. 安全EventMachine的Web服务
- 27. 安全Web服务(NTLM) - Jmeter
- 28. .NET Web服务安全
- 29. WCF WsHttpBinding证书传输安全 - Windows证书配置
- 30. Windows服务器安全
证书不用于签名,密钥是。你有权访问私钥吗?在这种情况下,你可以签署一些东西。 – 2010-12-06 01:01:28