我正在寫一個SMTP服務器在Ruby中,我試圖找出正確的方法來處理SSL/TLS錯誤「解密失敗或錯誤的記錄mac」是處理類型爲「解密失敗或錯誤的記錄mac」類型的OpenSSL錯誤的正確方法是什麼?
重試操作吐出了隨機垃圾#read_nonblock,除了粗魯和關閉連接,我不知道該怎麼辦
我正在寫一個SMTP服務器在Ruby中,我試圖找出正確的方法來處理SSL/TLS錯誤「解密失敗或錯誤的記錄mac」是處理類型爲「解密失敗或錯誤的記錄mac」類型的OpenSSL錯誤的正確方法是什麼?
重試操作吐出了隨機垃圾#read_nonblock,除了粗魯和關閉連接,我不知道該怎麼辦
如果您自己是服務器,則表示OpenSSL無法正確解密客戶端發送的TLS記錄,或MAC計算失敗,即客戶端的標記與您計算的標記不匹配。
從錯誤或網絡錯誤(如EJP提到的),這也有可能發生,如果有人主動更改的內容發送錯誤的信息的發送時間或等等,等等發送只有部分消息在任何
除了情況下,作爲服務器,你不要想嘗試搶救這樣的連接。畢竟,這可能是一次攻擊。處理這個事件的正確方法是呼叫SSLSocket#close
,它將嘗試執行一個SSL_shutdown
,它會再次嘗試向客戶端發送「close notify」警報,這是一種優雅的TLS方式,告訴對方您即將關閉這個連接。
爲了恢復與發生此事的客戶的通信,您需要協商從頭開始的新連接。
你無法處理它。這是您的SSL庫或對等網絡中的錯誤,或者是非常不可能的網絡錯誤。只需關閉連接即可。