代码之家  ›  专栏  ›  技术社区  ›  Kubi

根据验证过程,远程证书无效。GMAIL公司

  •  2
  • Kubi  · 技术社区  · 14 年前

    下面的函数在控制台应用程序中工作,但在我的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);
    }
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Himanshu THE ONLY ONE    12 年前

    您可以尝试处理证书验证事件,以便更容易确定远程证书被视为无效的原因。为此,在调用sendmail方法之前,请添加以下行:

    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(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证书存储中的本地计算机/受信任的根证书中删除了证书,则可能会发生这种情况。