Etwas wie das?
# 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>
Bearbeiten:
Ich habe auch die Idee, einen zweiten virtuellen Host für einen anderen Port zu erstellen, sagen wir 344, und Port 443 für diese bestimmte IP an 344 weiterzuleiten/zu routen. Ist das möglich?
Antwort1
Erstellen Sie zwei virtuelle Hosts, die sich nur im verwendeten Port unterscheiden.
Verwenden Sie iptables, um die ausgewählte IP bedingt zur TLS 1.0-Instanz umzuleiten.
iptables -t nat -A PREROUTING -s CLIENT_OF_INTEREST -p tcp --dport 443 -j REDIRECT --to-port 344
Allerdings muss ich hinzufügen, dass ich mich dabei etwas unwohl fühlen würde. Es wäre besser, wenn der Client, wenn überhaupt möglich, TLS 1.2 unterstützt.
Wenn es beispielsweise Java ist, stellen Sie sicher, dass Sie die „unbegrenzten“ Kryptobits hinzugefügt haben.
Aber ich verstehe durchaus, dass dies nicht immer möglich ist.
Antwort2
Ja, das ist möglich. Sie können für jeden virtuellen Host eine SSLProtocol-Direktive festlegen.
Die von Ihnen gepostete Beispielkonfiguration scheint in Ordnung zu sein, aber Sie verwendenStandardvirtuelle Hosts. Sie müssen besser IP:Port verwenden.
http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslprotocol