对不起,如果它是非常开放的。关于 Heartbleed 漏洞利用的所有新闻都充斥着谷歌,我不知道它做了什么。 可以重新编译吗?
使用 -DOPENSSL_NO_HEARTBEATS 重新编译 OpenSSL 的副作用是什么?
如果你编译 OpenSSL,-DOPENSSL_NO_HEARTBEATS那么你会得到一个 OpenSSL 库和工具,它们可以做任何“普通”OpenSSL 可以做的事情,除了对名为“Heartbeat”的 SSL/TLS 扩展的支持。该扩展在RFC 6520中进行了描述。这是一个相当新的扩展。
与所有扩展一样,它在任何给定的 SSL 连接中的使用都取决于在握手的早期步骤中发生的协商。基本上,只有当客户端声称它支持它并且想要使用它(在 中ClientHello)并且服务器响应它支持它并且可以使用它(在 中)时,才可以使用扩展ServerHello。如果您的 SSL 库是在没有 Heartbeat 支持的情况下编译的,那么它将不会宣传 Heartbeat 支持;如果它参与了出现该扩展的握手,它将把它作为“未知扩展”处理,即完全忽略它。
除此之外,您新编译的 OpenSSL 的行为将与前一个一样,并且一切正常。如果一个特定的应用程序坚持使用 Heartbeat 扩展程序,将会中断:该扩展程序将尝试激活该扩展程序并使用它,但它不会工作。
查看 OpenSSL 源代码,该SSL_heartbeat()函数(用于通过心跳感知应用程序发送“节拍”)似乎是一个宏,它SSL_ctrl()使用一些数字参数调用通用函数。这意味着如果一个应用程序真的想要使用该功能,并且您为它提供了您的无心跳 OpenSSL 库,那么将不会出现链接错误;代码将运行;但任何节拍发送调用都会导致错误状态。应用程序将如何反应取决于应用程序。事实上,从应用程序的角度来看,事情就好像对等体不支持 Heartbeat。
幸运的是,这个扩展是非常新的,并且知道心跳的应用程序应该不多,更不用说使用它了。您重新编译的 OpenSSL 可能根本不会破坏任何东西,因此您的问题的答案是:是的,重新编译可能很好。