在C#中验证SSL证书

3
我正在从一个FTPS服务器下载文件,服务器会向我发送一个证书。
微软公司指出:
当没有使用自定义验证时,证书名称将与用于创建请求的主机名进行比较。例如,如果Create(String)传递了一个参数"https://www.contoso.com/default.hmtl",默认行为是客户端根据www.contoso.com检查证书。
证书未通过默认验证(RemoteCertificateNameMismatch)。目前,我使用ServicePointManager.ServerCertificateValidationCallback委托,并提供一个返回true的委托,仅“通过”而不进行任何验证。如何使用C#验证证书?
上述委托的一个参数X509Certificate certificate包含两个公共属性:Issuer和Subject。这两个属性中都没有任何与主机名匹配的数据。

主机名也可以包含在证书的主题备用名称扩展中。 - Eugene Mayevski 'Callback
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接