gpt4 book ai didi

ssl - FtpWebRequest EnableSSL 错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:20 24 4
gpt4 key购买 nike

我收到“远程证书根据验证程序无效”异常消息,代码如下:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(MyCertValidationCb);

var request = (FtpWebRequest)WebRequest.Create(new Uri(myUri));
request.EnableSsl = true;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.BeginGetRequestStream(EndGetStreamCallback, _state);


public static bool MyCertValidationCb(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors)
== SslPolicyErrors.RemoteCertificateChainErrors)
{
return false;
}
if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateNameMismatch)
== SslPolicyErrors.RemoteCertificateNameMismatch)
{
Zone z;
z = Zone.CreateFromUrl(((FtpWebRequest)sender).RequestUri.ToString());
if (z.SecurityZone == SecurityZone.Intranet
|| z.SecurityZone == SecurityZone.MyComputer)
{
return true;
}
return false;
}
return false;
}

ftp 服务器是 filezilla。启用 FTP over SSL,并且还启用了允许显式 FTP over TLS。我生成了一个 certificate.crt 文件。使用 filezilla 客户端连接到 ftp 位置,并在弹出窗口中选中“始终信任此证书”。

在 MyCertValidationCb 方法中,(sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors) == SslPolicyErrors.RemoteCertificateChainErrors 始终为真。

如果我将 MyCertValidationCb 更改为始终返回 true,则 ftp 请求会顺利通过。我确定这是证书的问题。有人有什么想法吗?

最佳答案

RemoteCertificateChainErrors 是由于受信任的根证书颁发机构证书存储中没有证书而导致的。

Filezilla 生成具有以下格式的自签名证书:

-----开始RSA私钥-----

//哈希

-----结束RSA私钥-----

-----开始证书-----

//哈希

-----证书结束-----

为了导入证书,删除私钥部分并保存新文件。将其安装到受信任的根证书颁发机构证书存储中。

现在我遇到的问题是 RemoteCertificateNameMismatch,我会在另一个主题中发布它。

关于ssl - FtpWebRequest EnableSSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com