Ssl

TLSv1 在 Apache 中未關閉

  • January 25, 2019

在 CentOS 7 伺服器上查看我的 SSLProtocols 可能被覆蓋的最佳方法是什麼?Apache 2.4.6(意識到這也很老了,所以我必須在下班時間更新它,看看它是否能解決問題)。

我正在嘗試在我的配置根目錄(/etc/httpd/conf/httpd.conf)中使用此 Apache 指令禁用 TLSv1

SSLProtocol -all +TLSv1.1 +TLSv1.2

然而,當我執行nmap --script ssl-enum-ciphers -p 443 <mysite.com>它時,它顯示 TLSv1 仍然處於啟用狀態:

ssl-enum-ciphers: 
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
|     compressors: 
|       NULL
|     cipher preference: server 

SSL Labs 測試揭示了同樣的事情。

SSLProtocol虛擬主機中沒有提供其他指令。

之後我決定使用這個命令搜尋所有配置文件sudo grep -rnw '/etc/httpd' -e 'SSLProtocol',它顯示了以下位置:

/etc/httpd/conf/httpd.conf:359:SSLProtocol -all +TLSv1.1 +TLSv1.2
/etc/httpd/conf.d/ssl.conf:74:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf:227:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf:257:SSLProtocol ALL -SSLv2 -SSLv3
/etc/httpd/conf.d/ssl.conf.rpmnew:75:SSLProtocol all -SSLv2 -SSLv3

所以我進入 ssl.conf 文件並更改第 74 行以匹配,問題仍然存在。第 227 和 257 行是兩個虛擬主機,我目前沒有測試,但稍後會更新。

編輯:儘管剩下的兩行是針對虛擬主機的,獲得了有關 OpenSSL 錯誤的答案,但我更改了對伺服器的所有引用SSLProtocol -all +TLSv1.1 +TLSv1.2並重新啟動了我的伺服器,但沒有任何改變。為什麼會這樣?我想知道這是否是 Apache 2.4.6 本身的錯誤。

我設法解決了這個問題,這絕對是一個意想不到的修復。在我看來,虛擬主機繼承其兄弟設置的事實是一個糟糕的決定。特別是全域文件設置不優先。我在 Bugzilla 上發現了這個問題,後來有人提到 Let’s Encrypt/etc/letsencrypt/options-ssl-apache.conf在這個文件中有一個隔離文件時正在處理這個問題,並且有一個設置:

SSLProtocol             all -SSLv2 -SSLv3

Certbot 會在虛擬主機配置中自動安裝對此文件的引用,並且該證書恰好安裝在我的伺服器配置中的第一個虛擬主機上。我更改了它以匹配我之前的設置,SSLProtocol -all +TLSv1.1 +TLSv1.2並且效果很好。

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