我正在编写一个 C# 电子邮件应用程序(电子邮件客户端)。但是,每次我尝试与我的服务器启动 TLS session 时都会出现错误,并且通过 Wireshark 进行调试显示存在某种 TLS/SSL 问题导致连接被重置
客户端 ---> 使用 MAILKIT/MIMEKIT (MS VS 2015) 的 C# 应用程序
服务器 ---> 基于 Linux 的电子邮件服务器,已分配自签名证书。
现在,当我使用 Thunderbird 连接(发送/接收电子邮件)到我的邮件服务器时一切正常,但如果我使用我的应用程序则显示错误。
- Mailkit/Mimekit Wireshark TLS 捕获
- Mailkit/Mimekit 发送到我的服务器的密码套件
- 服务器接受的密码
- Thunderbird Wireshark TLS 捕获
- Thunderbird 发送到我的服务器的密码套件
- 服务器接受的密码
- 我的 C# APP 显示的错误
邮件服务器日志中显示的错误:
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/