2013-11-01 40 views
2

我在glassfish服務器中有一些簡單的Web服務應用程序,其中請求需要證書授權。有幾個證書。我想使用取決於ID:該作品在GlassFish:證書未正確加載在weblogic服務器上部署的jax-ws webservices

MyCustomPortType service; 
... 
// set certifikate 
setSSLSocketFactory(id, (BindingProvider) service); 
// send request 
final MyCustomType response = service.process(params); 

現在我需要部署在WebLogic這個應用程序,並在這裏就是問題所在。現在只需傳遞帶有第一個id和其他請求返回錯誤的請求,因爲它們的證書不正確。我認爲,在weblogic有一些高速緩存,其錯過GlassFish和要求中仍包含甚至SSLSocketFactory的是不同的同一證書

UPDATE:

我讀這篇文章:http://docs.oracle.com/cd/E13222_01/wls/docs92/secmanage/ssl.html#wp1194460,但我不知道如何實現這個在我的應用

UPDATE2:

protected void setSSLSocketFactory(final String agenda, final BindingProvider service) { 
    service.getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY, 
     MutualSSLContext.getFactory(configuration, agenda)); 
    } 

    public static final SSLSocketFactory getFactory(final RobaktConfiguration cfg, final String agenda) { 

if (cfg == null || agenda == null) { 
    return null; 
} 

    try { 
    final File keyStore = cfg.getKeystorePath(agenda); 
    final KeyManager[] keyManagers; 
    if (keyStore != null) { 
     keyManagers = new KeyManager[] {new MutualKeyManager(cfg, agenda)}; 
    } else { 
     keyManagers = null; 
    } 
    final SSLContext sslContext = SSLContext.getInstance("SSL"); 
    sslContext.init(keyManagers, new TrustManager[] {new MutualTrustManager()}, null); 
    final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); 

    return sslSocketFactory; 
    } catch (Exception e) { 
    throw new MutualSSLException(e.getMessage(), e); 
    } 

}

MutualKeyManager類implem ent接口X509ExtendedKeyManager。我不能在這裏添加它

+0

幾個問題給出正確的答案: 2.如何實現'setSSLSocketFactory'?你可以發佈一些代碼嗎? – secra

+0

nope,問題已更新 – hudi

回答

0

好的。我想我看到了這個問題... WLS你正在嘗試什麼版本? WLS < 12.1.1使用基於Certicom的SSL實現。您是否嘗試過在Weblogic控制檯中設置Use JSSE(它位於安全性 - >高級 - 我沒有在ATM附近使用較舊版本的WLS)?

既然您已經嘗試切換到JSSE--我能想到的最後一個選項是使用weblogic.security.SSL.SSLContext。你現在基本上會做同樣的事情:

SSLContext context = weblogic.security.SSL.SSLContext.getInstance("TLS"); 
Certificate[] certs = ...; // load the certificates from your prop-files keystore 
PrivateKey privKey = ...; // load the private key from your keystore 
context.loadLocalIdentity(certs, key); 

service.getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY, context.getSocketFactory()); 
+0

是的我嘗試在weblogic管理控制檯中使用JSSE,但沒有成功 – hudi

+0

hm以及哪個maven依賴項包含此類? – hudi

+0

'weblogic.jar'因爲weblogic是一個商業產品,所以你不會在repo1中找到這個庫。 :-)你將需要安裝'weblogic.jar'到你的本地倉庫。 – secra

相關問題