我收到一条异常消息“根据验证过程,远程证书无效”,代码如下:
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。启用了SSL上的FTP,并且还启用了允许显式TLS上的FTP。我已经生成了一个certificate.crt文件。已使用filezilla客户端连接到ftp位置,并在弹出窗口中选中“始终信任此证书”。
在MyCertValidationCb方法中,(sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors) == SslPolicyErrors.RemoteCertificateChainErrors始终为真。
如果我将MyCertValidationCb更改为总是返回true,则ftp请求将顺利通过。我敢肯定这是证书的问题。有谁有什么想法吗?
发布于 2010-09-09 02:07:21
RemoteCertificateChainErrors是受信任的根证书颁发机构证书存储中没有证书的结果。
Filezilla生成以下格式的自签名证书:
-开始RSA私钥
//hash
-结束RSA私钥
-开始证书
//hash
-结束证书
要导入证书,请删除私钥部分并保存新文件。将其安装到受信任的根证书颁发机构证书存储中。
现在我遇到的问题是RemoteCertificateNameMismatch,我将在另一个主题中发布它。
https://stackoverflow.com/questions/3662592
复制相似问题