這似乎是一個常見錯誤,但在找到解決辦法(參見下文)後,我無法確定原因我首先得到它。當SMPT服務器擁有有效的證書時,獲取「遠程證書根據驗證過程無效」
我正在將SMTP功能寫入我們的應用程序,並且正在嘗試將SSL功能添加到我們已有的工作SMTP中。
我正在使用我們公司的MS Exchange服務器進行測試,特別是在該服務器上啓用的Webmail選項。我可以通過我的代碼在內部發送電子郵件,但不會驗證我的連接並匿名發送,但由於我們公司的政策,這些電子郵件不會轉發到外部電子郵件地址。除此之外,我正在爲我們的客戶編程,他們並不都允許開放中繼和/或匿名連接。
我相信Exchange服務器正在使用顯式SSL/TLS。我嘗試telnet到端口25上的服務器地址,並得到一個文本響應,人類可讀的響應,根據我以前的一些搜索意味着它使用顯式SSL/TLS。
我有下面的測試代碼
SmtpClient SMTPClient = new SmtpClient(webmailaddress);
SMTPClient.Port = 25;
SMTPClient.UseDefaultCredentials = true;
SMTPClient.EnableSsl = true;
System.Net.Mail.MailMessage Message = new `
System.Net.Mail.MailMessage(emailFrom,emailTo,subject,body);
SMTPClient.Send(Message);
在我的搜索,因爲我碰到這個"The remote certificate is invalid according to the validation procedure." using Gmail SMTP server
從中我得到了下面的代碼來解決......
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
else
{
if (System.Windows.Forms.MessageBox.Show("The server certificate is not valid.\nAccept?", "Certificate Validation", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
return true;
else
return false;
}
}
這在我的測試代碼中工作。但是我正在寫的實際過程(而不是我的測試代碼)將在後臺運行,並且無法真正詢問用戶(而是報告Windows錯誤日誌中的錯誤)。
當我開始時,我的問題是真的爲什麼我得到這個錯誤。如果我在瀏覽器中訪問https:webmail.ourdomain.co.uk,它會顯示一個有效的證書,並且沒有安裝證書的選項(如果它是自簽名的,我會這樣做)。
然而,當我運行我的代碼,並在ValidateServerCertificate方法調試中斷Poing的,我看證書的價值觀和看到我們的本地服務器的發行人「之前不使用」和「不要」在今天的屬性之後使用。這與我得到的證書不符。
我也檢查了sslPolicyErrors標誌在ValidateServerCertificate的調試中是什麼,它們顯示「RemoteCertificateChainErrors」和「RemoteCertificateNameMismatch」。
那麼我錯過了什麼......爲什麼它沒有使用正確的證書?如果我需要採取措施在本地安裝證書以便使用,那麼我需要了解它們,以便我可以告訴客戶如果得到此信息應該怎麼做。
我不想通過從ValidateServerCertificate方法返回true來繞過檢查,並且因爲它是後臺進程,所以我不能要求用戶,所以我需要了解如何讓我的代碼使用正確的/可信的證書。
希望有人能建議。
嗯,我猜沒有人知道這個答案。還沒有找到解決方案:( – RosieC 2014-10-10 10:01:57