C# Mailkit/Mimekit SSL 密码问题,无法发送/接收电子邮件

标签 c# email ssl wireshark mailkit

我正在编写一个 C# 电子邮件应用程序(电子邮件客户端)。但是,每次我尝试与我的服务器启动 TLS session 时都会出现错误,并且通过 Wireshark 进行调试显示存在某种 TLS/SSL 问题导致连接被重置

客户端 ---> 使用 MAILKIT/MIMEKIT (MS VS 2015) 的 C# 应用程序

服务器 ---> 基于 Linux 的电子邮件服务器,已分配自签名证书。

现在,当我使用 Thunderbird 连接(发送/接收电子邮件)到我的邮件服务器时一切正常,但如果我使用我的应用程序则显示错误。

  1. Mailkit/Mimekit Wireshark TLS 捕获 01
  2. Mailkit/Mimekit 发送到我的服务器的密码套件 02
  3. 服务器接受的密码 03
  4. Thunderbird Wireshark TLS 捕获 04
  5. Thunderbird 发送到我的服务器的密码套件 05
  6. 服务器接受的密码 06
  7. 我的 C# APP 显示的错误 07

邮件服务器日志中显示的错误:

SSL_accept error from unknown[xxx.xxx.xxx.xxx]: Connection reset by peer

谁能指导我该怎么做?我无法在服务器端更改/更新 CIPHERSUITE。此外,在我的代码中,我忽略了不受信任的证书检查,因此不会因为自签名证书而出现错误。

最佳答案

我通过在 C# 代码中的 CONNECT 命令之前添加以下行解决了这个问题。添加的代码:

client.SslProtocols = System.Security.Authentication.SslProtocols.Tls11;

但是,相同的密码 (TLS_RSA_WITH_AES_128_CBC_SHA) 仍然由客户端发送并被服务器接受。这是 TLS 1.1 运行,而 thunderbird 使用 TLS1.2 并且运行完美。

虽然这实际上解决了问题,但我仍然不是TLS1.2。

client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12; 带回相同的错误。

关于C# Mailkit/Mimekit SSL 密码问题,无法发送/接收电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47088143/

相关文章:

ssl - Tomcat5 SSL 不工作

python - 如何从 Python 获取 SSL/TLS 内部机制?

c# - 如何向 .Net DLL 或 EXE 添加水印(以追踪版权)?

c# - 在 C# 中将 key 写入 Windows 注册表

email - 我应该使用什么启发法来防止自动应答器 war ?

javascript - 使用 onkeyup 事件确保电子邮件匹配

c++ - C++ 中的 Curl - 无法从 HTTPS 获取数据

c# - 如何基于 DataTemplate 的 DataContext 对象创建 ViewModel?

c# - SQL 或 C# : Loop through values of one field and insert into another

Java Outlook 集成