【问题标题】:The remote certificate is invalid according to the validation procedure. GMAIL根据验证程序,远程证书无效。邮件
【发布时间】:2011-04-27 10:34:18
【问题描述】:

以下功能在控制台应用程序中有效,但在我的 asp.net 网站中无效。我收到一个错误: 根据验证程序,远程证书无效。

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("ma@mail.com", "Pass");

    smtp.Send(mm);
}

【问题讨论】:

    标签: asp.net gmail


    【解决方案1】:

    您可以尝试处理证书验证事件,以便更轻松地确定远程证书被视为无效的原因。为此,在调用 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 证书存储中的本地计算机/受信任的根证书中删除了证书,则可能会发生这种情况。

    【讨论】:

      猜你喜欢
      • 2011-03-28
      • 2016-11-28
      • 2013-08-08
      • 2012-07-20
      • 2015-03-17
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多