vagrant-ansible-originで作成した環境に、SSL Server Testを実施。Overall Rating(総合評価)が「B」だった。
課題が記載されているので対応して「A」にしたい。
RC4暗号を使わない
This server accepts RC4 cipher, but only with older protocols. Grade capped to B. MORE INFO »
このサーバーはRC4暗号を受け入れますが、古いプロトコルのみです。Bを上限とするグレード。
TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) ECDH secp256r1 (eq. 3072 bits RSA) FS INSECURE 128
TLS_RSA_WITH_RC4_128_SHA (0x5) INSECURE 128
TLS_RSA_WITH_RC4_128_MD5 (0x4) INSECURE 128
設定確認
/etc/httpd/conf.d/ssl.confで、!RC4(=RC4除く)と設定しているが効かない。
#SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH
ちなみに、Nginx(/etc/nginx/conf.d/ssl.confおよび各Virtual)では効いている。
# ssl_ciphers HIGH:!aNULL:!MD5; ssl_ciphers HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH;
設定変更
各VirtualにSSLCipherSuiteがなかったので、入れてみたが効かず。
VirtualHostの中にあると効かないと、どこかに書いてあったので、上に追加してみたら効いた。
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH <VirtualHost _default_:443>
TLS 1.1を使わない
This server supports TLS 1.1. Grade will be capped to B from January 2020. MORE INFO »
このサーバーはTLS 1.1をサポートしています。グレードは2020年1月からBに制限されます。
設定変更
TLS 1.1を切って、TLS 1.2のみにする。
TLS 1.3にも対応したかったが、CentOS7標準のApache 2.4.6は未対応との事。2.4.37から対応。
また、OpenSSLも1.1.1以降が必須。現在は1.0.2k。
ミドルウェアがバージョンアップされたら対応されるように、マイナス表記に変更しました。
/etc/httpd/conf.d/ssl.conf
#SSLProtocol +TLSv1.1 +TLSv1.2 #SSLProxyProtocol +TLSv1.1 +TLSv1.2 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLProxyProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
ちなみに、Nginx(/etc/nginx/conf.d/ssl.confおよび各Virtual)も同様にTLS 1.1を切りました。
こちらもTLS 1.3にも対応したかったが、Nginx 1.16.1は対応しているもののOpenSSLが未対応の為、設定のみ追加(エラーにはならない)。
こちらはマイナス表記がなさそうなので、諦めて直接指定に。
# ssl_protocols TLSv1.1 TLSv1.2; ssl_protocols TLSv1.2 TLSv1.3;
最終結果
Overall Rating(総合評価)が「A+」になりました。
Git commit & push
vagrant-ansible-centos7 -> Apacge/NginxのSSL設定変更
vagrant-ansible-centos6 -> Apacge/NginxのSSL設定変更
おまけ(HSTS)
HTTP Strict Transport Security (HSTS) with long duration deployed on this server. MORE INFO »
このサーバーに長期間展開されたHTTP Strict Transport Security(HSTS)。
常時SSL化の為、下記を追加しているのが効いている。
Apache
Header set Strict-Transport-Security "max-age=31536000"
Nginx
add_header Strict-Transport-Security "max-age=31536000";
下記申請すると、対応ブラウザからアクセスすると勝手にhttp://をhttps://に書き換えてくれるのでよりセキュアになるらしい。
HSTプリロードリストへの登録申請: https://hstspreload.org/