gpt4 book ai didi

c# - 电子邮件服务器上的自签名证书

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:04 26 4
gpt4 key购买 nike

我正在使用测试 email server在 SSL 环境中测试我的代码。我使用以下命令创建了一个自签名根目录和一个签名证书。

enter image description here

enter image description here

我写了一个简单的测试程序,使用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 连接

enter image description here

在我的客户端机器上,我有以下内容:

enter image description here

然而,每当我发送电子邮件时,我都会在服务器日志中收到如下错误:

 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 委托(delegate)。在使用 SmtpClient 之前尝试这样的事情:

System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

返回 true 并因此接受所有证书在开发环境中只是一个好主意,但您可以扩展委托(delegate)实现以检查其他属性,而不仅仅是盲目地为所有内容返回 true。

关于c# - 电子邮件服务器上的自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com