2012-09-13 33 views
2

我有Apache Tomcat服務器A的Web應用程序這使得Web應用程序連接到運行在其他地方的服務器B中。此服務器B需要使用SSL證書的客戶端身份驗證Tomcat作爲一個客戶端。在Tomcat Web應用程序不使用SSL客戶端證書

我所試圖實現的是,爲了使服務器A這個Web應用程序使用SSL客戶端證書到服務器B驗證

因此,我已經提供了一些額外的JAVA_OPTS我的Tomcat服務器答:

-Djavax.net.ssl.trustStore=/location/keystore.jks 
    -Djavax.net.ssl.trustStorePassword=changeit 
    -Djavax.net.ssl.keyStore=/locaton/keystore.jks 
    -Djavax.net.ssl.keyStorePassword=changeit 
    -Djavax.net.debug=ssl 

現在這個keystore.jks包含三個證書:

  • CA證書
  • 服務器證書(PKCS12)這是服務器的證書一個
  • 客戶端證書(PKCS12),這是客戶端證書我希望我的web應用程序使用。

的tomcat /日誌/ catalina.out中給出了這樣的:

Client write key: 
0000: some hex 
Server write key: 
0000:some hex 
... no IV used for this cipher 
*** CertificateVerify 
pool-1-thread-2, WRITE: TLSv1 Handshake, length = 134 
pool-1-thread-2, WRITE: TLSv1 Change Cipher Spec, length = 1 
Finished 
verify_data: { data } 

pool-1-thread-2, WRITE: TLSv1 Handshake, length = 32 
pool-1-thread-2, READ: TLSv1 Alert, length = 2 
pool-1-thread-2, RECV TLSv1 ALERT: fatal, unsupported_certificate 
pool-1-thread-2, called closeSocket() 
pool-1-thread-2, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate 
pool-1-thread-2, called close() 

爲了證明這個密鑰庫我寫了一個小的Java應用程序,這使得具有相同連接到同一臺服務器B的正確性密鑰庫併成功協商客戶端證書。

我曾試圖改變這種客戶端證書X509型,但即使如此,我得到的錯誤,我不能夠溝通。

我想也許有我丟失的東西?有人有這種東西的經驗嗎?

謝謝

回答

1

這看起來是因爲客戶端證書不是「客戶身份驗證」的使用功能。您可以通過打開證書,並檢查「詳細信息」選項卡,在「增強型密鑰用法」字段下驗證。它應該在現場有「客戶認證」。