处理"decryption failed or bad record mac"类型的OpenSSL错误的正确方法是什么?



我正在用Ruby编写一个SMTP服务器,我正在尝试找出处理SSL/TLS错误"解密失败或不良记录mac"的正确方法是什么

重试操作会从#read_nonblock中吐出随机垃圾,除了粗鲁和关闭连接之外,我不确定该怎么办

您自己是这里的服务器,该消息将指示OpenSSL无法正确解密客户端发送的TLS记录或MAC计算失败,即客户端的标签与您计算的标签不匹配。

除了错误或网络错误(如EJP所述),如果有人主动更改了发送的内容,发送了错误的消息或仅发送了部分消息等,也会发生这种情况。

无论如何,作为服务器,您不想尝试挽救此类连接。毕竟,这可能是一次攻击。处理此事件的正确方法是调用SSLSocket#closeSSL_shutdown该将再次尝试向客户端发送"关闭通知"警报,这是告诉对等方您将要关闭此连接的优雅 TLS 方式。

为了恢复与发生这种情况的客户端的通信,您需要协商从头开始的新连接。

你无法处理它。这是您的 SSL 库或对等方中的错误,或者不太可能是网络错误。只需关闭连接即可。

相关内容

  • 没有找到相关文章

最新更新