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

时间:2017-11-03 03:42:29

标签: c# email ssl wireshark mailkit

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

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

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

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

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

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

      

    未知[xxx.xxx.xxx.xxx]的SSL_accept错误:连接重置   对等

    任何人都可以指导我做什么吗?我无法在服务器端更改/更新CIPHERSUITE。此外,在我的代码中,我忽略了UNTRUSTED CERTIFICATE检查,因此由于自签名证书而未出现错误。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

您可以将Tls11和Tls12结合使用:

client.SslProtocols = SslProtocols.Tls11 | SslProtocols.Tls12;