我一直在努力使用 WCF 一段时间,但我似乎无法弄清楚。我有一个启用 SSL 的自托管 WCF 服务(使用来自自签名根 CA 的签名证书),到目前为止一切顺利。该服务用于企业对企业的通信,因此证书似乎是最佳解决方案。
(我目前正在使用 WS 绑定,但这只是出于开发目的,因为所有绑定方法都支持(据我所知)客户端证书的传输级安全性。)
服务的一些相关配置位:
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<!-- snip -->
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" />
</clientCertificate>
</serviceCredentials>
当我让客户端使用运行 WCF 服务的用户的“受信任的人”存储中的自签名证书时,它会失败。当我使用由我自己的根 CA 签名的证书时,即使它不在“受信任的人”存储中,它也可以工作。
我期待我能够使用自签名证书,将它们存储在“受信任的人”存储中,并且一切正常。但似乎有一些额外的验证正在进行,我错过了什么吗?有没有更好的办法?