前回は、SSL/TLSの遷移に触れるなど、具体的な設定内容から少しそれたお話をさせていただきました。
今回、「TLS1.2への対応」(3)ということで最終的に行った設定を説明して、こちらのシリーズを締めくくりたいと思います。
RC4と3DES、DHの無効化と暗号化方式の優先順序
RC4と3DES、DHは暗号化アルゴリズムの方式を指していますが、これらの使用を無効化します。
対象となるApacheの設定ファイルは/etc/httpd/conf.d/ssl.confとなります。
デフォルトの記述
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
変更後の記述
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
また、SSLHonorCipherOrderという項目も併せて設定します。SSLHonorCipherOrderは、サーバーとクライアント(ブラウザ)との暗号化方式の決定順序をサーバー優先とするかどうかを指定します。こちらの項目を「on」とすることで、サーバー優先で決定されます。
SSLHonorCipherOrder on
設定ファイルを変更したら保存してApacheを再起動します。
# service httpd restart
実は、ここまで行っても評価は「B」のままです。セキュリティ設定の評価を上げていくには、まだまだ追加の設定が必要です。
TLSのバージョンを固定
本記事の目的であるTLS1.2へのバージョンアップですが、httpsのプロトコルの設定で1.0や1.1が利用可能な状況を残してしまうと「Qualys SSL Labs」の評価はあがりません。
実際、バージョンの低いプロトコルで接続するクライアント(ブラウザ)も世の中には存在するため、それらをすべて切り捨てなくてはなりません。
今回、対象となるサーバーで稼働しているコンテンツは、すべてのクライアントを対象とする必要性のあるコンテンツではありませんので、あっさりと切り捨てさせてもらいました。
既に「TLS1.2への対応」(2)で設定していた「SSLProtocol」という項目を再度設定しなおします。
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
これによって、「SSLv2」「SSLv3」「TLSv1」「TLSv1.1」 を無効化し、結果的に「TLSv1.2」のみを有効としています。
もうこれで十分でしょう。と思い「Qualys SSL Labs」の評価を確認すると、「A」でした。まだ、「A+」に達していないのです。
HTST対応でA+へ
2018年7月にGoogle Chromeにおいて常時SSL化されていないページにアクセスすると、アドレスバーの左側に「保護されていない通信」と表示されるとのアップデートがリリースされました。
この対応について、.htaccessの設定によって、httpでアクセスされた通信をhttpsにリダイレクトさせるように設定していました。
これで大丈夫だろうと思っていましたが、実際の常時SSL化はHTSTによる対応が必要だという事だったと今更ながらに理解しました。
本当の意味でHTSTを有効化する設定は下記の通りです。こちらもssl.confに記載します。
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
設定ファイルを変更したら保存して再度Apacheを再起動します。
# service httpd restart
ここまで行ってやっと「A+」の評価を取得できました。
これまでに相当な数のWEBサイトに関わってきましたが、ここまでじっくりとApacheの設定ファイルを確認したのは初めてかも知れません。
もちろん、本来は知っていなくてはいけない事であり、十分に検証して対応する必要があることではあるのですが、、、
業務と対応のスピードを優先させていくと、これまでの設定手順で作業を進めてしまい、じっくりと腰を据えて対応することが疎かになってしまっていると改めて意識させられる対応でした。
コメント