.net FtpWebRequest“;根据验证程序,“远程证书无效”;
我有一个.NET客户端应用程序,它尝试通过文件ftp到具有自签名SSL证书的ftp站点。此ftp站点正在Windows 7企业版IIS 7上运行。我收到以下错误:“根据验证过程,远程证书无效” 我已尝试在受信任的根证书中安装证书,但仍然不起作用 我在这里的一些帖子中提到的代码中使用了委托回调——它是有效的。但我不想在我的生产代码中使用它 此外,在生产过程中,我们的一些客户正在使用自签名证书.net FtpWebRequest“;根据验证程序,“远程证书无效”;,.net,ssl,certificate,ftpwebrequest,.net,Ssl,Certificate,Ftpwebrequest,我有一个.NET客户端应用程序,它尝试通过文件ftp到具有自签名SSL证书的ftp站点。此ftp站点正在Windows 7企业版IIS 7上运行。我收到以下错误:“根据验证过程,远程证书无效” 我已尝试在受信任的根证书中安装证书,但仍然不起作用 我在这里的一些帖子中提到的代码中使用了委托回调——它是有效的。但我不想在我的生产代码中使用它 此外,在生产过程中,我们的一些客户正在使用自签名证书 关于如何解决这个问题有什么想法吗?我通过.NET遇到了同样的问题,证书根目录和证书链受到我的帐户甚至本地计
关于如何解决这个问题有什么想法吗?我通过.NET遇到了同样的问题,证书根目录和证书链受到我的帐户甚至本地计算机帐户的信任。所以证书是金的 对我来说,我使用了错误的主机名。我使用的是一个完全限定的名称(并且到达了正确的位置),但证书实际上是发给另一个别名的。因此,请确保您的服务器名称与证书上的名称完全匹配 看看这篇文章,我就是这样找到答案的。。。也许你也需要订阅活动
如果您尝试连接到IP地址而不是域名,也会出现此错误。由于证书是颁发给域名的,所以IP地址不起作用。您必须覆盖证书检查,以便它们始终被认为是良好的。 这不会阻止通道保持SSL保护
uritarget=新的Uri(“ftp://yourUri");
字符串文件名=@“FullPathFyourFile”;
FtpWebRequest=(FtpWebRequest)WebRequest.Create(目标);
request.Method=WebRequestMethods.Ftp.UploadFile;
request.Credentials=新的网络凭据(“用户”、“密码”);
request.enablesl=true;
//覆盖证书检查
ServicePointManager.ServerCertificateValidationCallback=
(s、证书、链、sslPolicyErrors)=>真;
//将文件内容复制到请求流
//....
由@Luca投票最多的答案盲目地接受任何证书。这是一个安全漏洞
在实现时,应该验证证书。例如,通过对照已知值检查证书的哈希:
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
对于,您需要.NET4.8。在旧版本上,使用返回SHA-1哈希的
基于
有关VB.NET版本的代码,请参见。结果表明我也遇到了类似的问题。FtpWebRequest使用的是一个IP地址(“1.2.3.4”),当然证书是颁发给域名(“*.example.com”)的通配符。一旦我在FtpWebSession中切换到使用域名,这个错误就消失了。虽然这个“有效”,但它并不安全。您应该验证证书,而不是盲目地接受任何证书。有关验证证书的方法,请参阅。
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, errors) =>
{
return
(errors == SslPolicyErrors.None) ||
certificate.GetCertHashString(HashAlgorithmName.SHA256).Equals(
"EB8E0B28AE064ED58CBED9DAEB46CFEB3BD7ECA67737179E3C85BC3CD09D4EEC");
};