像這樣的東西嗎?
# TLS v1.0+ for one IP
<VirtualHost _default_:443>
Order deny,allow // <------------- HERE
Deny from all // <------------- HERE
Allow from 10.20.30.40 // <------------- HERE
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-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-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
SSLHonorCipherOrder on
SSLCompression off
...
</VirtualHost>
# TLS v1.2 for everyone else
<VirtualHost _default_:443>
Order allow,deny // <------------- HERE
Deny from 10.20.30.40 // <------------- HERE
Allow from * // <------------- HERE
SSLProtocol -all +TLSv1.2
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AECDH-AES256-SHA:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ADH-AES256-SHA:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:AECDH-DES-CBC3-SHA:ADH-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCompression off
...
</VirtualHost>
編輯:
我還有一個想法,為不同的連接埠(例如 344)建立第二個虛擬主機,並為該特定 IP 將連接埠 443 轉送/路由到 344。是否可以?
答案1
建立兩個虛擬主機,僅使用的連接埠不同。
使用 iptables 有條件地將選定的 IP 重新導向到 TLS 1.0 實例。
iptables -t nat -A PREROUTING -s CLIENT_OF_INTEREST -p tcp --dport 443 -j REDIRECT --to-port 344
不過,我必須補充一點,這樣做會讓我感到有點噁心。如果可能的話,讓客戶端能夠執行 TLS 1.2 會更好。
例如。如果是 Java,請確保新增了「無限」加密位元。
但我很清楚這並不總是可能的。
答案2
是的,這是可能的,您可以為每個虛擬主機設定 SSLProtocol 指令。
您發布的範例配置似乎沒問題,但您正在使用預設虛擬主機。您必須更好地使用IP:連接埠。
http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslprotocol