[英]Self Sign certificate on email server
我正在使用测试电子邮件服务器在SSL环境中测试我的代码。 我使用以下命令创建了一个自签名的根和一个签名的证书。
我使用SmtpClient编写了一个简单的测试程序来发送测试电子邮件,代码如下:
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage(tFrom.Text, tTo.Text);
mm.Subject = tSubject.Text;
mm.Body = tBody.Text;
SmtpClient client = new SmtpClient(tSmtp.Text, Convert.ToInt32(tPort.Text));
client.UseDefaultCredentials = false;
if (!String.IsNullOrEmpty(tPass.Text) && !String.IsNullOrEmpty(tUser.Text))
{
client.EnableSsl = true;
client.Credentials = new NetworkCredential(tUser.Text, tPass.Text);
}
client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
client.SendAsync(mm, null);
在我的服务器(Smtp4Dev)上,我已将其设置为接受TLS连接
在我的客户端计算机上,我有以下内容:
但是,每当我发送电子邮件时,都会在服务器日志中不断出现以下错误:
220 Ready to start TLS
Session ended abnormally.
System.NotSupportedException: The server mode SSL must use a certificate with the associated private key.
如果我在没有SSL的情况下尝试此操作,则可以收到我的电子邮件。 我试图在“个人和受信任的根证书”下添加证书,但是仍然会出现相同的错误。 我对SSL非常陌生,因此希望您能为我指明正确的方向。
看一下实现ServerCertificateValidationCallback
委托。 在使用SmtpClient
之前,请尝试以下类似操作:
System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
在开发环境中,返回true并因此接受所有证书只是一个好主意,但是您可以扩展委托实现以检查其他属性,而不仅仅是盲目地为所有内容返回true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.