回答:
複数のTLS VirtualHostsがあり、Server Name Indication(SNI)を使用する場合SSLProtocol
、各VirtualHostにディレクティブを持つことは許可されていますが、実際にIP VirtualHostsがない場合、SSLProtocol
ディレクティブの最初の出現からの設定がサーバー全体に使用されますおよび/またはTLS 1をサポートするすべての名前ベースのVirtualHosts 。
したがって、メインhttpd.conf
(および、たとえばインクルードされたすべてのスニペットconf.d/*.conf
と同様のインクルード)でSSLProtocol
ディレクティブのオカレンスを確認してください。
あなたの構文は正しいですが、私はezra-sの答えに同意しall
ますが、速記を展開すると、わずかに改善することができます:
SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
単に使用することにより:
SSLProtocol TLSv1.2
/etc/letsencrypt/options-ssl-apache.conf
指定したもので十分です。他のプロトコルは表示されません。SSLLABSが最近のテストをキャッシュすることを忘れないでください。あなたのようにそれを定義する他のプロトコルがないことを知ることは、意図的に複雑になっています。
いずれにせよ、あなたはそれを使用するか、単純に:
SSLProtocol TLSv1.2
-ALL +TLSv1.2
か?
私もこの問題に苦労しており、SSLProtocol
ディレクティブを使用して設定を変更することはできませんでした。仮想ホスト構成に次を追加することになりました。
SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
完璧に機能しました。SSLOpenSSLConfCmd
ディレクティブの詳細については、こちらをご覧ください。
ApacheでTLS1.0バージョンを無効にします。
複数の仮想ホスティングがある場合は、すべての構成ファイルを更新する必要があります。そうでない場合は、ssl.confで十分です。
TSLサポートバージョンを確認するには:
# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
| TLSv1.0:
| TLSv1.1:
| TLSv1.2:
Apache構成ファイルを変更して、vi /etc/httpd/conf.d/web.conf
すべてのTLSを削除し、TLS1.2のみを許可します。
SSLProtocol TLSv1.2
変更後に検証します。
# grep SSLProtocol /etc/httpd/conf.d/web.conf
SSLProtocol TLSv1.2
# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
| TLSv1.2:
# service httpd restart
変更を反映するには、次のコマンドを使用してApacheサービスを再起動する必要があります。
sudo service apache2 restart
以下のコードは問題なく機能します。詳細については、 https://karthikekblog.com/how-to-disable-enable-ssl-tls-protocols-in-ubentu-apache-linux-server/をご覧ください。
<VirtualHost *:443>
ServerName www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol +TLSv1.2
SSLCertificateFile /etc/apache2/certificates/certificate.crt
SSLCertificateKeyFile /etc/apache2/certificates/certificate.key
SSLCertificateChainFile /etc/apache2/certificates/intermediate.crt
</VirtualHost>