SSL是否执行自动重新谈判



我使用SSL 1.0.1N编写的客户端服务器应用程序用于套接字通信。我正在努力防止重新谈判(这是必需的)。在我的代码中,没有任何地方进行重新谈判。 我看到openssl具有BIO_SET_SSL_RENEGOTIATE_BYTES和BIO_SET_SSL_RENEGOTIATE_TIMEOUT,它允许您在读取一定数量的字节或超时后设置自动重新谈判。 我的问题是,如果我不为其中一个设置值,它们是否具有默认值,SSL仍将自动启动重新谈判?如果没有在代码中完成,我很难弄清楚是什么原因导致重新谈判的原因。

我正在尝试防止重新谈判(这是必需的)

希望这不是对CVE-2009-3555的回应。2009年11月在OpenSSL 0.9.8K中固定。

但是,您仍然可以通过SSL_CTX_set_options()SSL_set_options设置SSL_OP_NO_RENEGOTIATION选项:

ssl_ctx_set_options

名称

ssl_ctx_set_options,ssl_set_options,ssl_ctx_clear_options, ssl_clear_options,ssl_ctx_get_options,ssl_get_options, ssl_get_secure_renegotiation_support-操纵SSL选项

概要

 #include <openssl/ssl.h>
 long SSL_CTX_set_options(SSL_CTX *ctx, long options);
 long SSL_set_options(SSL *ssl, long options);
 long SSL_CTX_clear_options(SSL_CTX *ctx, long options);
 long SSL_clear_options(SSL *ssl, long options);
 long SSL_CTX_get_options(SSL_CTX *ctx);
 long SSL_get_options(SSL *ssl);
 long SSL_get_secure_renegotiation_support(SSL *ssl);

描述

ssl_ctx_set_options()通过选项中的bitMask添加选项 CTX。未清除之前已经设置的选项!

ssl_set_options()通过选项中的bitMask添加选项到SSL。 未清除之前已经设置的选项!

ssl_ctx_clear_options()清除选项中设置的选项 到Ctx。

ssl_clear_options()清除了通过选项中的bitmask设置的选项 SSL。

ssl_ctx_get_options()返回CTX设置的选项。

ssl_get_options()返回SSL的选项。

ssl_get_secure_renegotiation_support()指示是否对等 支持安全的重新谈判。请注意,这是通过宏实现的。 注释

可以通过设置几个来更改SSL库的行为 选项。这些选项被编码为bitmasks,可以通过 位或操作(|)。

ssl_ctx_set_options()和ssl_set_options()影响(外部) SSL库的协议行为。(内部)行为 可以使用类似的SSL_CTX_SET_MODE和 ssl_set_mode()函数。

在握手期间,使用SSL对象的选项设置。 当使用ssl_new()从上下文创建新的SSL对象时, 当前选项设置已复制。更改CTX并不影响 创建的SSL对象。ssl_clear()不影响设置。

...

以下修改可以使用:

...

ssl_op_no_renegotiation

禁用TLSV1.2及更早的所有重新谈判。不要寄 HelloreQuest消息,忽略通过 clienthello。

安全重新谈判

...

请注意,该页面具有"安全续订"部分。阅读。

然后,您确实需要查看您的要求。他们很可能已经过了十年了。通过花费时间和精力在十年前修复的问题上,您不会花时间和精力来解决解决当前问题的问题。

最新更新