IIS - WCF 4.0调用Java(无法为SSL/TLS建立安全通道)



我的WCF服务遇到了一点问题,它试图与Java Web服务通信。

我有ASP。Net MVC前端,通过HTTP与WCF服务通信。然后,WCF服务利用证书的相互身份验证,通过HTTPS与JAVA web服务进行通信。目前的问题是,当WCF服务试图调用JAVA后端时,我得到以下错误:

Could not establish secure channel for SSL/TLS

在Java端,我运行JBOSS,仅对SSL使用SSL3和TLS密码。我在那一端的错误是:

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是7.0版本,在Windows Server 2008 R2上运行。该服务运行在。net 4上。(我需要指出的一点是,我的主机应用运行的是。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.

…但我不确定如何解决它。从这里可以看出证书是正确的。它就是无法获取密码

[answer]

我的IIS_IUSRS帐户没有设置证书的权限。

设置好后,一切正常

最新更新