【发布时间】:2014-06-18 15:58:57
【问题描述】:
我有一个使用 WS-HTTP 绑定和传输安全性 (SSL) 的 WCF 服务(内部编写)。我们正在使用客户端证书和可接受证书的白名单(证书是带外提供给我们的)对呼叫者进行身份验证。因此,我们使用自定义验证器(例如,派生自 System.IdentityModel.Selectors.X509CertificateValidator 的类)来执行数据库查询以检查白名单。
它适用于以下情况:我们有一个用于开发的根证书,由开发团队颁发(使用 OpenSSL)。此根在托管我们的 WCF 服务的服务器上是受信任的(例如,安装在受信任的第三方 CA 证书存储中)。测试客户端配置为提供由该根签名的证书。这种情况的行为符合预期。
在以下情况下不起作用:客户端向服务提供自签名证书。在这种情况下,客户端会收到错误消息“HTTP 请求被客户端身份验证方案‘匿名’禁止”,而且——这是奇怪的部分——服务的证书验证器甚至没有运行。我们没有机会竖起大拇指。客户端证书被低于我们验证器的层拒绝。
如何在我的服务中使用自签名客户端证书?
【问题讨论】: