Fuz*_*ass 7 c# ssl ssl-certificate mailkit mimekit
Visual Studio 2015 中的 0 代码
1 我正在使用 Mailkit 最新版本 (1.18.1.1) 从我自己的电子邮件服务器发送电子邮件。
2 电子邮件服务器具有不受信任的自签名证书。
3 我在代码中添加了以下两行,以忽略服务器证书错误:
client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => { return true; };
client.CheckCertificateRevocation = false;
Run Code Online (Sandbox Code Playgroud)
4 但我的程序仍然崩溃。
5 在电子邮件服务器日志中显示错误:
来自未知 [xxx.xxx.xxx.xxx] 的 SSL_accept 错误:连接被对等方重置
我猜这是因为服务器证书问题。因为在 Wireshark 捕获中,一旦我获得 SERVER 证书,连接就会终止。
6 我还在我的系统中安装了不受信任的电子邮件服务器证书,但问题仍然存在。
8 完整代码:
使用 (var client = new SmtpClient(new ProtocolLogger("logging.log")))
{
// For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
client.ServerCertificateValidationCallback = (mysender, certificate, chain, sslPolicyErrors) => { return true; };
client.CheckCertificateRevocation = false;
client.Connect("xxx.com", 465, true);
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate("xxx@xxx.com","123456");
client.Send(message);
client.Disconnect(true);
}
Run Code Online (Sandbox Code Playgroud)
如果您控制连接的两端,您可能需要首先检查是否使用 TLS 进行发送,以确保问题仅在使用 TLS 时发生。
还可以尝试在没有wireshark、fiddler或其他中间人嗅探器/代理的情况下运行,以确保以安全的方式到达服务器不会出现问题。检查您的防病毒或互联网安全系统是否因证书不受信任而关闭您的连接。
您可能需要确保的另一件事是您的客户端和服务器共享相同的协议:我知道旧的 TLS 和 SSL 协议已被弃用,因此客户端和服务器之间可能没有通用协议。
您还可以尝试启用 system.net 跟踪(自 .NET 2.0 起可用),看看您是否从获得的(非常详细的)日志中获得了一些更具体的见解: https: //blogs.msdn.microsoft.com/dgorti/2005 /09/18/使用系统网络跟踪/
System.Net 跟踪是 1) 每个进程 2) 显示线程 3) 适用于 SSL 4) 适用于环回。5)不需要重新编译代码
[编辑]
您的问题似乎有点太宽泛,我无法猜测问题,请尝试缩小问题范围。例如:
顺便说一下,SSPI 似乎与受信任的安全问题有关,因此还要仔细检查您没有将服务器配置为仅接受受信任的用户。
[/编辑]
如果这还不够,我会尝试更新我的答案=)
华泰
| 归档时间: |
|
| 查看次数: |
14812 次 |
| 最近记录: |