2011-12-20 46 views
0

我正在嘗試與Java Web服務交談時嘗試使用我的WCF服務。IIS -WCF 4.0調用Java(無法建立SSL/TLS的安全通道)

我有一個ASP.Net MVC前端通過HTTP與WCF服務通話。然後WCF服務通過使用證書的相互認證通過HTTPS與JAVA Web服務對話。問題是目前在WCF服務改掉調用JAVA後臺,我收到以下錯誤:

Could not establish secure channel for SSL/TLS 

在Java方面,我運行JBoss,與SSL3和TLS密碼僅用於SSL。我有這個目的的錯誤是:

21:49:48,701 INFO [STDOUT] http-0.0.0.0-8543-2, WRITE: TLSv1 Handshake, length = 1514 
21:49:49,499 INFO [STDOUT] http-0.0.0.0-8543-2, received EOFException: error 
21:49:49,499 INFO [STDOUT] http-0.0.0.0-8543-2, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 
21:49:49,507 INFO [STDOUT] http-0.0.0.0-8543-2, SEND TLSv1 ALERT: fatal, description = handshake_failure 
21:49:49,507 INFO [STDOUT] http-0.0.0.0-8543-2, WRITE: TLSv1 Alert, length = 2 
21:49:49,507 INFO [STDOUT] http-0.0.0.0-8543-2, called closeSocket() 
21:49:49,508 INFO [STDOUT] http-0.0.0.0-8543-2, called close() 

由於我使用證書的相互驗證,我的第一個停靠港是壞的證書。所以我打開了服務wsdl頁面(也需要認證證書),並且一切正常。我的證書很好,值得信賴。

然後我開始思考,也許證書沒有接受服務電話。所以我創建了一個控制檯應用程序,它使用相同的證書調用Java服務(通過配置文件中的端點行爲查找)。你看,這工作正常,服務響應數據顯示在屏幕上。

因此,我認爲IIS中有一些正在停止打開SSL通道的東西,而這正是我需要一點幫助的地方。

我的IIS是在Windows Server 2008 R2上運行的版本7.0。該服務運行.net 4. (我應該指出的一件事是,我的consle應用程序運行.Net v3.5而不是v4。)

我已經涉足了一些SCHANNEL設置,不知道應該啓用哪些設置,哪些應該被禁用。 目前我有:

TLS 1.0/Server/Enabled = 1 
SSL 3.0/Server/Enabled = 1 
SSL 2.0/Server/Enabled = 1 
PCT 1.0/Server/Enabled = 1 

我也有:

SSL 2.0/Client/DisabledByDefault = 0 

沒有人有哪裏開始什麼想法?

由於提前, 尼克

[更新]

我現在得到以下錯誤在Windows錯誤日誌:

A fatal error occurred when attempting to access the SSL client credential private key. 
The error code returned from the cryptographic module is 0x8009030d. 
The internal error state is 10003. 

...但我不一定要解決它。證書正在被這個外觀拾起。它只是無法獲得密碼。

回答

1

[回答]

事實證明,在證書的權限的沒有被設置爲我IIS_IUSRS帳戶。

當我設置這些,一切正常。