繁体   English   中英

如何在具有传输安全性的WCF呼叫中使用自签名客户端证书?

[英]How can I use a self-signed client certificate in a WCF call with transport security?

我有一个使用WS-HTTP绑定和传输安全性(SSL)的WCF服务(内部编写)。 我们正在使用客户证书和可接受证书的白名单对呼叫者进行身份验证(证书是带外提供给我们的)。 因此,我们使用自定义验证器(例如,从System.IdentityModel.Selectors.X509CertificateValidator派生的类)进行数据库查询以检查白名单。

它在以下情况下起作用:我们拥有开发团队使用(使用OpenSSL)颁发的用于开发的根证书。 在托管我们的WCF服务的服务器上,此根目录是受信任的(例如,安装在受信任的第三方CA证书存储区中)。 测试客户端配置为出示由该根签名的证书。 这种情况下的行为符合预期。

在以下情况下不起作用:客户端向服务提供自签名证书。 在这种情况下,客户端收到错误消息“客户端身份验证方案'Anonymous'禁止HTTP请求”,并且-这很奇怪-服务的证书验证程序甚至没有运行。 我们没有任何机会表示赞赏。 客户端证书被比我们的验证器低一层的拒绝。

如何在服务中使用自签名客户端证书?

你不能 在WCF中,WS-HTTP传输安全性是SSL。 我的错误是由双方之间的SSL协商失败导致的。

此协商的正常情况如下:服务向客户端发送其信任的根证书列表。 客户端检查此列表,并找到服务器将发现可信任的证书并将其发送。

在我的错误情况下,客户端正在检查服务器列表,并确定其证书将不受信任。 此时,客户端通常将尝试协商匿名访问,在我的情况下这是禁止的,因此协商失败。

在WS-HTTP绑定+传输安全性方案中,即使您使用自定义验证模式,WCF也不支持自签名客户端证书或不可信CA颁发的证书。 它确实在邮件安全性中支持此方案。 我怀疑Net.TCP支持这种情况,但尚未进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM