【发布时间】:2015-02-13 15:11:59
【问题描述】:
我在生产环境中收到的错误:
根据验证程序,远程证书无效。
[AuthenticationException:根据验证程序,远程证书无效。] System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken 消息,AsyncProtocolRequest asyncRequest,异常异常)+2755308
System.Net.Security.SslState.StartSendBlob(Byte[] 传入,Int32 计数,AsyncProtocolRequest asyncRequest) +470
生产环境使用三层架构,Web 与 App 对话,App 与数据库对话。 Web 和 App 使用 WCF 服务层通过 SSL (443) 进行通信。我们认为它可能是 IIS7 中的 SSL 证书中的配置或 WCF 配置问题。
我们尝试了什么: 我将应用程序和 Web 中的证书添加到“本地计算机”和“当前用户”的受信任机构。
如果需要,我可以添加我的 WCF Web 配置。
我尝试了以下建议:
https://msdn.microsoft.com/en-us/library/ms734695.aspx
"The remote certificate is invalid according to the validation procedure." using Gmail SMTP server
How do I know what the storeName of a certificate?
https://msdn.microsoft.com/en-us/library/ms733813(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/hh556232%28v=vs.110%29.aspx
Self-Hosted WCF Service with Mutual SSL (between Service and Client) fails with 403 Forbidden
【问题讨论】:
-
您是否尝试过通过构建一个与真实应用程序配置方式相同但仅实现单个
DoNothing()操作的虚拟应用程序(理想情况下是一个客户端只尝试调用一次DoNothing()操作)?如果失败,您至少可以确定它位于基础架构中的某个位置,而不是您实际业务代码中的某个位置。 -
另外,尝试从浏览器连接到端点并查看它的内容(假设您收到错误)。
-
@JeroenMostert 对,我们实现了类似的东西并收到了同样的错误。我们确实注意到证书被颁发给不同的 url,除了 localhost,应用程序和 web 都颁发给 *.some.some... Web 到应用程序地址没有使用相同的颁发给:"... " Web 和应用层尚未向公众开放。
-
可能和你的服务行为有关,你的服务行为是什么样的?是链式信任还是配对信任,您可以粘贴您的绑定和行为吗?请不要粘贴敏感值并在此处放置一个虚拟值
-
@Bravo11 实际上我们没有在 WCF 中包含行为,我们只是使用了 security mode="transport" 和 clientCredentialType="None" 的绑定。我想我读过一篇关于使用行为而不是上述绑定的帖子。在这里:stackoverflow.com/questions/6514067/wcf-ssl-service 一个比另一个更好用吗?