openssl 安全重新协商(不支持)

tal*_*aki 6 openssl

我正在运行在 Ubuntu 14.04 LTS 服务器上实现的 Web 服务。我正在调试客户端使用和服务器使用TLSv1 一段时间后连接中断。我自己无法访问客户端,只能访问服务器和路由器。当我代替服务器运行时,我会在客户端连接时看到消息。重新协商不一定与连接问题有任何关系,但我正在尝试理解重新协商。到目前为止,我还无法找到以下问题的答案:openssl version 0.9.7mopenssl 1.0.1fopenssl s_serversecure renegotiation not supported

  1. 重新谈判的典型触发因素是什么?如果不支持安全协商,是否会导致不安全?
  2. 重新协商是由客户端或服务器代码发起的还是 openssl 可以在某个点发起它?
  3. 有没有办法强制与之重新谈判openssl s_server和/或openssl s_client进行试验?

daw*_*wud 6

四种可能的重新协商类型

  • 客户端发起的安全重新协商
  • 客户端发起的不安全重新协商
  • 服务器发起的安全重新协商
  • 服务器发起的不安全重新协商

由于发现了执行重新协商攻击( CVE-2009-3555 )的可能性,这是“所有当前版本的 TLS 上都存在”的漏洞,因此可以肯定地认为,除非客户端和服务器都实现TLS,否则重新协商不会安全地执行重新协商指示扩展

OpenSSL 的第一反应是禁用重新协商,安全重新协商将在后续版本中实现。

根据定义,使用 0.9.7m 的客户端早于 CVE-2009-3555,并且容易受到此攻击,而且无法执行安全的重新协商。

至于什么可以触发重新协商,您可以在不同的 RFC 中跟踪:TLS v1.0TLS v1.1TLS v1.2。分析 CVE-2009-3555的不同博客文章还提供了有关何时发生这种情况的详细信息。

关于是否可以从s_client子命令中强制执行此操作以进行测试,是的,这记录在手册页中

连接命令
如果与 SSL 服务器建立连接,则显示从服务器接收的任何数据,并且任何按键操作都将发送到服务器。当交互使用时(这意味着既没有给出 -quiet 也没有给出 -ign_eof),如果该行以 R [...]

也可以通过编程来完成此操作。