什么是处理类型"解密失败或错误记录mac"的OpenSSL错误的正确方法?

时间:2012-06-16 15:43:36

标签: ruby openssl ssl

我正在Ruby中编写一个SMTP服务器,我正在试图找出处理SSL / TLS错误的正确方法“解密失败或错误记录mac”是

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

2 个答案:

答案 0 :(得分:3)

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

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

在任何情况下,作为服务器,您想要尝试拯救这样的连接。毕竟,它可能是一次攻击。处理此事件的正确方法是调用SSLSocket#close,它将尝试执行SSL_shutdown,它将再次尝试向客户端发送“关闭通知”警报,这是一种优雅的TLS告知方式您要关闭此连接的同伴。

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

答案 1 :(得分:2)

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