在C#中验证SSL证书

时间:2012-03-14 12:54:16

标签: c# validation ssl certificate

我正在从FTPS服务器下载文件,服务器会将证书发回给我。

微软声明:

  

如果未使用自定义验证,则会将证书名称与用于创建请求的主机名进行比较。例如,如果Create(String)传递了参数“https://www.contoso.com/default.hmtl”,则默认行为是客户端针对www.contoso.com检查证书。

证书未通过默认验证(RemoteCertificateNameMismatch)。现在我使用ServicePointManager.ServerCertificateValidationCallback委托并提供一个返回true的委托,只是“传递”而不进行任何验证。如何使用C#验证证书?

上述delgate的一个参数X509Certificate证书包含两个感兴趣的公共属性:Issuer和Subject。这两个属性都不包含与主机名匹配的任何数据。

1 个答案:

答案 0 :(得分:0)

通常,您必须拥有针对正确主机名的有效证书才能通过验证而不是覆盖回调。 您使用什么目标地址来访问FTP服务器?根据您的描述,它应与主题不同。 您可以考虑使用主题主机名来访问服务器而不是当前服务器。如果您遇到DNS问题,也可以设置客户端主机文件。