我有一个通过SSL连接到远程服务器的.NET应用程序。在测试环境中,远程服务器使用自签名证书。默认情况下,SSL连接失败。如果我将证书安装到“受信任的根证书颁发机构”存储中,则连接会成功。
但是,由于它现在是受信任的证书颁发机构,因此该证书可用于为任何其他站点签署证书,而我的计算机上的应用程序(如Internet Explorer)将信任这些证书。我希望可以信任此证书来验证特定网站,但不信任证书颁发机构。有没有办法这样做?
答案 0 :(得分:1)
您可以实施自己的证书验证机制,该机制还允许使用某些自签名或自定义证书。
查看RemoteCertificateValidationCallback Delegate。在此回调中,您可以检查验证是否已成功(sslPolicyErrors == SslPolicyErrors.None
),然后您无需执行任何操作。否则,您可以检查给定证书是否等于您希望在此上下文中信任的自定义证书。如果证书匹配则返回true。
使用您自己的RemoteCertificateValidationCallback委托可以完成面向连接(例如使用此SslStream constructor)。