Apache-2.4

無法更新 Apache SSL 協議或密碼

  • March 31, 2016

我已經搜尋和測試了幾天,並且已經用完了可以嘗試的東西。這是我的問題。我有一個使用 OpenSSL 1.0.2g 在 Microsoft Windows 2008 R2 伺服器上執行的 Apache Lounge 2.4.18 (Win32) VC14 Web 伺服器。我們的公司安全團隊掃描了我的伺服器並檢測到正在使用 RC4。(他們使用 Rapid7 的 Nexpose)。他們建議配置伺服器以禁用對 RC4 密碼的支持,並建議使用如下所示的密碼配置。他們還建議不要使用 TLSv1,而只使用 TLSv1.1 和 TLSv1.2。我還執行 SSLScan 來複製結果,可以看到“TLSv1 128 bits RC4-SHA”被接受。

沒問題,我認為並更改了我的 httpd.conf 文件,如下所示,然後重新啟動了 Apache2.4 服務。然後我讓他們重新掃描伺服器,他們收到了相同的結果。我搜尋了整個伺服器,尋找包含“SSLCipherSuite”或“SSLProtocol”的文件,並將它們全部刪除或重命名,除了\Apache24\conf\httpd.conf。我確實有一個 \Apache24\conf\openssl.cnf 文件,但我認為它沒有任何作用,因為它仍然是 Apache 附帶的預設文件。我還進行了大規模清理並刪除了所有舊版本的 Apache、OpenSSL 和 PHP。大約 3 週前,我從 Apache 2.2 和 OpenSSL 0.9.x 升級了 Apache 和 OpenSSL,並且一直執行沒有問題。我在 error.log 或 windows 事件查看器中沒有任何啟動錯誤。

Apache/OpenSSL 是否在其他地方確定協議或密碼套件?

是否有預設的地方會忽略我的 SSL 相關指令?

我的 httpd.conf 文件的內容(“MYDOMAIN”顯然不是我的實際域名):

<VirtualHost *:80>

   DocumentRoot "C:/Apache24/htdocs"
   ServerName www.MYDOMAIN.com
</VirtualHost>

<VirtualHost *:443>
   DocumentRoot "C:/Apache24/htdocs_apps"
   ServerName apps.MYDOMAIN.com

   SSLEngine on
   SSLCertificateFile "C:/Apache24/certs/233afff052190aeb.crt"
   SSLCertificateKeyFile "C:/Apache24/certs/star_MYDOMAIN_com.key"
   # SSLCertificateChainFile "C:/Apache24/certs/gd_bundle-g2-g1.crt"

   SSLProtocol -ALL +TLSv1.1 +TLSv1.2 
   SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSAAES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSAAES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK

   <Location / >
       Options -ExecCGI -FollowSymLinks -Indexes
       Require all granted
   </Location>
</VirtualHost>

任何幫助是極大的讚賞。

啊啊成功!事實證明,我們的網路使用“F5”設備進行 SSL 連接,然後將連接代理回我的伺服器。看起來他們需要研究他們的密碼!由於這個小練習,我的伺服器現在更加安全。我也使用 CloudFlare,所以連接使用 TLSv1.1 和 TLSv1.2 進行 Cloudflare->F5->OpenSSL。

午餐時間。我想知道我們是否還有那種兩杯午餐的政策……

至於 openssl.conf,它是否有 SSLCipherSuite 指令,如果有,是否被註釋掉?可能存在“合併”問題。

查看您的 SSLCipherSuite 指令,我看到以下問題(這可能是問題的一部分,也可能不是問題的一部分):

錯別字:

  • ECDHE-ECDSAAES256-GCM-SHA384 應該是 ECDHE-ECDSA-AES256-GCM-SHA384
  • 雖然 TLSv1.0,但 DHE-RSAAES256-SHA 應該是 DHE-RSA-AES256-SHA

TLSv1.0 協議:

  • AND-RSA-AES128-SHA 是 TLSv1.0
  • AND-DSS-AES256-SHA 是 TLSv1.0

無論如何,我使用:

SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

SSLProtocol all -SSLv2 -SSLv3

並從 Qualys SSL Labs 的SSL 伺服器測試中獲得 A+ 評級(包括驗證無 RC4)。

注意:雖然有些人正在放棄 TLSv1.0,但您可能會在使用相當數量的瀏覽器時遇到問題,可能包括 Android 5.0.0 及更高版本、Win 7 上的 IE 8-10、Win Phone 8.0 上的 IE 10、Safari 5.1.9在 OS X 10.6.8 和 Safari 6.0.4 在 OS X 10.8.4

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