1

我有一个通过 SSL 连接到远程服务器的 .NET 应用程序。在测试环境中,远程服务器使用自签名证书。默认情况下,SSL 连接失败。如果我将证书安装到受信任的根证书颁发机构存储中,则连接成功。

但是,由于它现在是受信任的证书颁发机构,因此此证书可用于为任何其他站点签署证书,并且我计算机上的应用程序(例如 Internet Explorer)将信任这些证书。我希望信任此证书以验证特定网站,但不信任该证书作为证书颁发机构。有什么办法吗?

4

1 回答 1

2

您可以实施自己的证书验证机制,该机制还允许某些自签名或自定义证书。

查看RemoteCertificateValidationCallback Delegate。在此回调中,您可以检查验证是否已成功 ( sslPolicyErrors == SslPolicyErrors.None),然后您无需执行任何操作。否则,您可以检查给定证书是否等于您要在此上下文中信任的自定义证书。如果证书匹配返回 true。

使用您自己的 RemoteCertificateValidationCallback 委托可以完成面向连接(使用例如这个SslStream 构造函数)。

于 2012-04-04T14:41:54.180 回答