我想使用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. WCF Web服務和SSL和證書
- 2. Web服務安全
- 3. Windows服務安全
- 4. WCF,安全和證書
- 5. 服務結構,AD和客戶端證書安全
- 6. GET請求,安全性和Web服務
- 7. 安全的ASP.NET Web服務和PHP
- 8. Web服務的安全性(REST和SOAP)
- 9. ASP.NET Web服務安全
- 10. .NET Web服務安全性
- 11. PHP nusoap web服務安全
- 12. web服務安全頭
- 13. 安全EventMachine的Web服務
- 14. 安全Web服務(NTLM) - Jmeter
- 15. 單擊安全web服務
- 16. $ _ POST安全PHP web服務
- 17. .NET Web服務安全
- 18. SSRS Web服務安全
- 19. C#Windows服務的安全
- 20. WCF服務安全認證和授權
- 21. JBoss RESTEasy Web服務可以使用x509證書來獲得安全性嗎?
- 22. 具有多個證書的CXF SSL安全Web服務客戶端
- 23. 無法使用傳輸安全性和證書認證來訪問WCF服務
- 24. WCF服務 - 使用用戶名驗證的證書和消息安全性
- 25. 的Java Web應用服務安全和不安全的資源
- 26. 帶有證書認證的iPhone Web服務調用WCF服務
- 27. 基於認證的安全Web服務認證
- 28. 交換Web服務x509證書
- 29. 通過SSL證書保護Web服務
- 30. 使用證書調用Web服務
證書不用於簽名,密鑰是。你有權訪問私鑰嗎?在這種情況下,你可以簽署一些東西。 – 2010-12-06 01:01:28