验证C#中的SSL证书

本文关键字:证书 SSL 中的 验证 | 更新日期: 2023-09-27 18:27:50

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

微软表示:

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

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

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

验证C#中的SSL证书

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