我正在尝试与Java Web服务通信的WCF服务遇到一些问题。
我有一个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页面(也需要认证证书),一切正常。我的证书很好并且值得信赖。
然后我开始考虑可能是证书没有投入服务电话。所以我创建了一个控制台应用程序,它使用相同的certifcate调用Java服务(通过配置文件中的端点行为查找)。瞧,这项工作正常,服务响应数据显示在屏幕上。
这让我觉得IIS中有一些东西阻止了SSL通道被打开,这就是我真正需要帮助的地方。
我的IIS是在Windows Server 2008 R2上运行的7.0版。该服务在.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
有没有人对从哪里开始有任何想法?
提前致谢, 尼克
[UPDATE]
现在在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.
......但我不确定是否解决了。看起来这个证书正好被证实了。它只是无法获得密码。
答案 0 :(得分:1)
<强> [回答] 强>
事实证明,我的IIS_IUSRS帐户尚未设置证书的权限。
当我设置它们时,一切正常。