2010-07-07 56 views
2

我正在嘗試使用CXF Spring配置構建一個SSL安全的Web服務客戶端,我想知道如何告訴CXF在我的密鑰庫中使用此客戶端證書。 這應該是存在的,因爲如果我的密鑰庫擁有大量證書,CXF應該怎麼做才能找到好的證書?CXF SSL Spring配置 - 空客戶端證書鏈

這裏是我的配置:

<http-conf:conduit name="{urn:ihe:iti:xds-b:2007}DocumentRepositoryPortType.http-conduit"> 
    <http-conf:client AutoRedirect="true" Connection="Keep-Alive"/> 
<http-conf:tlsClientParameters secureSocketProtocol="SSL"> 
    <sec:keyManagers keyPassword="storepass"> 
      <sec:keyStore type="JKS" password="storepass" file="src/main/resources/keystore.jks" /> 
     </sec:keyManagers> 
    <sec:trustManagers> 
      <sec:keyStore type="JKS" password="storepass" file="src/main/resources/truststore.jks" /> 
    </sec:trustManagers> 
    <sec:cipherSuitesFilter> 
     <sec:include>.*_EXPORT_.*</sec:include> 
    <sec:include>.*_EXPORT1024_.*</sec:include> 
    <sec:include>.*_WITH_DES_.*</sec:include> 
    <sec:include>.*_WITH_NULL_.*</sec:include> 
    <sec:exclude>.*_DH_anon_.*</sec:exclude> 
    </sec:cipherSuitesFilter> 
    </http-conf:tlsClientParameters> 
</http-conf:conduit> 

<sec:keyManagers keyPassword=" 
    <sec:keyStore type="JKS" password="storepass" file="src/main/resources/keystore.jks" /> 
</sec:keyManagers> 

部分,是有寫類似

alias="mycertificate" 

的方法嗎?

我搜索了幾個網站,但沒有結果的時刻。

其實我的問題是,當我的CXF客戶端與SSL安全服務器進行通信時,有一個來自服務器的證書請求,以便用證書標識自己。服務器告訴我哪些是它正在等待的證書頒發機構,在我的密鑰庫中,我確實有一個證書已通過這些機構之一的認證,但是沒有證書從我的客戶機傳輸...

以下是如何它會在SSL記錄:

CertificateRequest:

*** CertificateRequest 
Cert Types: RSA, DSS, 
Cert Authorities: 
<CN=****, DC=****, DC=****> 
Others authorities... 

空的客戶端證書鏈:

*** Certificate chain 
*** 

你們是否有任何想法?

在此先感謝!

回答

1

很可能http-conduit上的「name」屬性是錯誤的。它應該是端點名稱(來自Service元素內),而不是PortType名稱。

但是,我會建議使用URL作爲名稱。

 
<http-conf:conduit name="http://localhost:8080/.*" .....> 
... 
</http-conf> 

注意末尾的通配符(。*)以匹配所有URL。

+0

你說得對。 其實我試過這種配置,但是我使用的值沒有工作... 謝謝! – reef 2010-07-12 09:19:55