Openssl
openssl 安全重新協商(不支持)
我正在執行在 Ubuntu 14.04 LTS 伺服器上實現的 Web 服務。
TLSv1
在客戶端使用openssl version 0.9.7m
和伺服器使用openssl 1.0.1f
. 我自己無法訪問客戶端,只能訪問伺服器和路由器。當我openssl s_server
代替伺服器執行時,我會secure renegotiation not supported
在客戶端連接時看到消息。重新協商不一定與連接問題有關,但我試圖了解重新協商。到目前為止,我還沒有找到以下問題的答案:
- 重新談判的典型觸發因素是什麼?如果不支持安全協商,是否會不安全地完成?
- 重新協商是由客戶端或伺服器程式碼發起的還是openssl可以在某個點發起?
- 有沒有辦法強制重新談判
openssl s_server
和/或openssl s_client
試驗它?
有四種可能的重新談判類型:
- 客戶端發起的安全重新協商
- 客戶端發起的不安全重新協商
- 伺服器發起的安全重新協商
- 伺服器發起的不安全重新協商
由於發現了執行重新協商攻擊的可能性( CVE-2009-3555 ),這是一個存在於“所有目前版本的 TLS”的漏洞,因此可以安全地假設重新協商不會安全執行,除非客戶端和伺服器都實施TLS重新協商指示擴展。
OpenSSL 的第一反應是禁用重新協商,並在以後的版本中實施安全重新協商。
根據定義,使用 0.9.7m 的客戶端早於 CVE-2009-3555,既容易受到這種攻擊,也無法執行安全的重新協商。
至於什麼會觸發重新協商,您可以在不同的 RFC 中進行跟踪:TLS v1.0、TLS v1.1、TLS v1.2。分析 CVE-2009-3555 的不同部落格文章也提供了有關何時發生這種情況的詳細資訊。
關於是否可以
s_client
出於測試目的從子命令中強制執行此操作,是的,這在手冊頁中有記錄:連接命令
如果與 SSL 伺服器建立連接,則顯示從伺服器接收到的任何數據,並且任何按鍵都將發送到伺服器。當以互動方式使用時(這意味著既沒有給出 -quiet 也沒有給出 -ign_eof),如果該行以 R 開頭,則將重新協商會話
$$ … $$
也可以以程式方式執行此操作。