我有一个非常具体的配置,其中WCF客户端和服务器需要使用证书进行身份验证。因为这个证书将只由我的客户端和服务器应用程序使用,并且不可能为每个实例生成一个专用证书,所以可以使用自签名。因此,我的孔连接工作良好,我可以在指向服务器的通道中附加客户端证书,服务器服务也在附加自己的证书。我想确保只有允许的客户端才能调用我的服务,所以验证必须在服务器端完成。我正在使用自定义验证器(X509CertificateValidator)重写方法Validate(X509CCertificate2证书)到目前为止,一切都很好,该方法在建立连接时被调用,它接收到具有所有属性的客户端证书,问题是:
-如何确保我收到的证书是原始证书以验证我的客户端??
现在,我正在使用一个使用HTTPS从网站导出的真(假)证书进行测试(导出浏览器中显示并在本地安装的证书)。当然,我没有私钥,但我可以将此证书附加到我的客户端连接中,并且它在服务器端得到了很好的接收。此证书中的所有属性都与原始证书相同,但不是!!那么,我如何验证我在服务器端收到的证书是原始证书,而不仅仅是副本??有什么方法可以使用证书的私钥在调用中进行签名??
非常感谢
如果覆盖validate函数,则基本上只能靠自己了。这基本上是绕过了整个证书安全系统。您需要使证书在根级别的服务器上受信任。如果不能做到这一点,您可以选择以下选项:1.使用通配符证书(如果您的所有服务器都可以在同一个域上)2.创建自己的认证机构