根据验证程序,远程证书无效。 GMAIL
问题描述:
下面的函数在控制台应用程序中工作,但它不在我的asp.net网站中工作。我收到一个错误: 根据验证程序,远程证书无效。根据验证程序,远程证书无效。 GMAIL
public static void SendEmail(MailMessage mm)
{
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("[email protected]", "Pass");
smtp.Send(mm);
}
答
您可以尝试处理证书验证事件,以便更容易确定远程证书被视为无效的原因。为此,调用SendEmail方法之前添加以下行:
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
然后提供ValidateServerCertificate实现,像
public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// replace with proper validation
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
else
return false;
}
通过ValidateServerCertificate所收到的参数应该给你关于为什么验证失败的细节(检查sslPolicyErrors)。您还可以访问远程证书和证书颁发机构链。
一种可能的情况是,您在与控制台应用程序不同的用户下运行网站,并且此用户不信任gmail证书的颁发者(或链中的中介机构)。如果您以某种方式从Windows证书存储中的本地计算机/受信任的根证书中删除了证书,则可能会发生这种情况。