我正在撰写C#电子邮件应用程序(电子邮件客户端)。但是,每次我尝试与服务器启动TLS会话时都会出现错误,并且通过Wireshark进行调试表明存在某种TLS / SSL问题导致重置连接
客户端--->使用MAILKIT / MIMEKIT的C#应用程序(MS VS 2015)
服务器--->电子邮件服务器基于Linux,已分配自签名证书。
现在,当我使用Thunderbird连接(发送/接收电子邮件)到我的邮件服务器时,一切顺利,但如果我使用我的应用程序显示错误。
邮件服务器日志中显示错误:
未知[xxx.xxx.xxx.xxx]的SSL_accept错误:连接重置 对等
任何人都可以指导我做什么吗?我无法在服务器端更改/更新CIPHERSUITE。此外,在我的代码中,我忽略了UNTRUSTED CERTIFICATE检查,因此由于自签名证书而未出现错误。
答案 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;