2021/04/11公開
以前の記事で、Windows IIS の「TLS暗号設定・暗号スイート」の設定変更について取り上げました。
今回は、主に Unix系 OS にて用いられている Web Server、「Apache」「Nginx」においての「TLS暗号設定・暗号スイート」の設定変更について取り上げます。
「Apache」「Nginx」に関しては、LinuxだけでなくWindowsでも利用可能で、Linuxにおいてもディストリビューションやバージョンの違い等により設定方法が異なる場合があります。
これらをすべて網羅することは難しいため、今回は下記の条件の環境で実施することを前提として説明していきます。
Apache は、mod_sslモジュールを利用します。
今回の環境は、ディストリビューションとして Debian を使用しており、RedHat 系とは設定ファイルのあるディレクトリ構成やファイル名が異なりますが、基本的に設定する内容は同じです。
RedHat 系に関しましては、5.参考情報のURLもご参照下さい。
# vi /etc/apache2/mods-available/ssl.conf |
Debian の場合は、/etc/apache2/mods-available/ssl.confを編集します。
RedHat 系の場合は、基本的に httpd.conf を編集します。
【変更箇所】
パラメータ名 | 値 | 説明 |
---|---|---|
SSLCipherSuite | "<暗号スイート設定文字列>" | 暗号スイート設定 | SSLProtocol | <バージョン設定> | プロトコルバージョン設定 |
SSLHonorCipherOrder | on | 暗号スイート順序サーバー優先設定 |
【設定値】( TLS1.2のみを有効化)
パラメータ名 | 値 |
---|---|
SSLCipherSuite | "ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHA CHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CA MELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CA MELLIA:+DHE+aRSA+SHA" |
SSLProtocol | TLSv1.2 |
SSLHonorCipherOrder | on |
【ssl.conf:変更例】
# apache2ctl configtest |
【実行例】→ 問題がない場合、「Syntax OK」が表示されます。
Apache の再起動を行います。
# systemctl restart apache2 |
【実行例】→ 問題なく再起動出来た場合は、何もメッセージは出ません。
それでは、変更実施がどのように反映されるかを確認するため、実施前と実施後の暗号化プロトコル・暗号スイートの設定状態を比較しましょう。
設定変更後、Nmapにて表示された暗号化プロトコル・暗号スイートの内容がTLS1.2のみになっていることが確認できます。
【実施前の暗号化プロトコル・暗号スイートの設定状態(Nmapにて表示)】
【Apache 再起動後の暗号化プロトコル・暗号スイートの設定状態(Nmapにて表示)】
# vi /etc/nginx/nginx.conf |
Debian の場合は、/etc/nginx/nginx.confを編集します。
RedHat 系の場合も、基本的に nginx.conf を編集します。
【変更箇所】
パラメータ名 | 値 | 説明 |
---|---|---|
ssl_ciphers | "<暗号スイート設定文字列>"; | 暗号スイート設定 |
ssl_protocols | <プロトコルバージョン設定>; | プロトコルバージョン設定 |
ssl_prefer_server_ciphers | on; | 暗号スイート順序サーバー優先設定 |
【設定値】( TLS1.2のみを有効化)
パラメータ名 | 値 |
---|---|
ssl_ciphers | "ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHA CHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CA MELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CA MELLIA:+DHE+aRSA+SHA"; |
ssl_protocols | TLSv1.2; |
ssl_prefer_server_ciphers | on; |
【nginx.conf:変更後】
# nginx -t |
【実行例】→ 問題がない場合、「syntax is ok」が表示されます。
# systemctl restart nginx |
【実行例】→ 問題なく再起動出来た場合は、何もメッセージは出ません。
それでは、こちらも変更実施がどのように反映されるかを確認するため、実施前と実施後の暗号化プロトコル・暗号スイートの設定状態を比較しましょう。
Nginxも設定変更後、Nmapにて表示された暗号化プロトコル・暗号スイートの内容がTLS1.2のみになっていることが確認できます。
【実施前の暗号化プロトコル・暗号スイートの設定状態(Nmapにて表示)】
【Nginx再起動後の暗号化プロトコル・暗号スイートの設定状態(Nmapにて表示)】
以上が、「Apache」「Nginx」の暗号化プロトコル・暗号スイートを変更する方法となります。
設定の確認方法としては、以前の公開した「Nmapを使ったWebサイトの利用可能な暗号化プロトコル・暗号スイートのチェックについて 」の記事にて紹介しましたNmapを利用しています。前回の記事も併せてご利用下さい。
◆Nmapを使ったWebサイトの利用可能な暗号化プロトコル・暗号スイートのチェックについて
https://www.anet.co.jp/security/engineer_blog/nmapweb.html
なお、暗号化プロトコル・暗号スイートの変更は、いきなり本稼働サーバーに実施するのではなく、検証環境で試してから実施することをお勧めします。
「Apache」「Nginx」の暗号化プロトコル・暗号スイートの設定に関するサイトのURLです。
※ページ内の「1.6.3. Setting the supported ciphers on an Apache HTTP Server」が対象の内容となります。
※ページ内の「2.3. Adding TLS encryption to an NGINX web server」が、対象の内容となります。