我有一个WCF服务,需要使用证书进行客户端身份验证。
我有一个简单的控制台应用程序,使用此WCF。
我有2个客户端证书,第一个控制台应用程序工作正常,第二个,它返回此错误:
System.ServiceModel.Security.MessageSecurityException: The HTTP request was forbidden with client authentication scheme 'Anonymous'. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
正如我在IIS日志中看到的那样,是403.7。
两个证书都安装在同一个商店中,并且两个证书在执行de控制台应用程序的用户的管理私钥中具有相同的权限。
两个证书都有:
有任何想法吗?
UPDATE
如果我激活SCHANNEL日志记录,当我使用失败的证书时,在事件查看器上我们会看到以下错误:
解决了
问题是我们使用以下方式获取证书:
X509FindType.FindBySubjectName
对于我们正在使用的主题,至少还有另外3个包含该主题的证书。
然后我们获得的证书不正确,我们更改要使用的代码
X509FindType.FindBySubjectDistinguishedName或X509FindType.FindByThumbprint
现在获得正确的客户证书和工作。