Openssl

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

  • January 6, 2017

我正在執行在 Ubuntu 14.04 LTS 伺服器上實現的 Web 服務。TLSv1 客戶端使用openssl version 0.9.7m和伺服器使用openssl 1.0.1f. 我自己無法訪問客戶端,只能訪問伺服器和路由器。當我openssl s_server代替伺服器執行時,我會secure renegotiation not supported在客戶端連接時看到消息。重新協商不一定與連接問題有關,但我試圖了解重新協商。到目前為止,我還沒有找到以下問題的答案:

  1. 重新談判的典型觸發因素是什麼?如果不支持安全協商,是否會不安全地完成?
  2. 重新協商是由客戶端或伺服器程式碼發起的還是openssl可以在某個點發起?
  3. 有沒有辦法強制重新談判openssl s_server和/或openssl s_client試驗它?

四種可能的重新談判類型:

  • 客戶端發起的安全重新協商
  • 客戶端發起的不安全重新協商
  • 伺服器發起的安全重新協商
  • 伺服器發起的不安全重新協商

由於發現了執行重新協商攻擊的可能性( 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 開頭,則將重新協商會話

$$ … $$

也可以以程式方式執行此操作。

引用自:https://serverfault.com/questions/822361