CentOS7のnginxでのバーチャルホストのTLS設定(ssl_protocolsとssl_ciphers)

HTTP2が流行りだしているので、それに伴って先にSSLを無効にしてTLSのみを有効にしようかと。
そのときに少しはまったので、備忘録。

ConoHaのクラウドでのサーバーはCentOS7+nginx(1.9.9)でバーチャルホストを使用している。
バーチャルホストはnginx.confファイルの”include”で設定しているディレクトリに、バーチャルホストごとにファイルを作成している環境。
なので、HTTPSサイト用の設定ファイルも当然複数あって下記のような感じとしている。
HTTPSサイトA:SSL_A.conf
HTTPSサイトB:SSL_B.conf
HTTPSサイトC:SSL_C.conf

この中で、先にHTTPSサイトBのSSLを無効にしてTLSのみ有効にしようと、SSL_B.confファイルの”ssl_protocols”と”ssl_ciphers”を変更してnginxを再起動させてブラウザでアクセスする。
しかし、何故かSSLが無効にならずに変更した設定が反映されていない感じ。
設定を見直したり何度か試してみたりしたけれど、全然反映されない。

で、Google先生に聞いてみたなかで、下記のコマンドを試してみた。
# openssl s_client -host ‘HTTPSサイトB’ -port 443 -ssl3

そうすると何故かHTTPSサイトAからの情報が帰ってきて、驚いた。

なので、SSL_A.confファイルの”ssl_protocols”と”ssl_ciphers”を変更してnginxを再起動させてHTTPSサイトBにブラウザでアクセスするとSSLが無効になってTLSが有効になった。

どうやら、”ssl_protocols”と”ssl_ciphers”と”ssl_dhparam”は、”include”で設定しているディレクトリの中にある最初の設定ファイルが有効になる、かと。
または、”listen [::]:443 ssl default_server;”と設定したファイルの”ssl_protocols”と”ssl_ciphers”と”ssl_dhparam”が有効になるみたい。

取りあえず解決したので、まーこんなものかと思っておこうかと。

にほんブログ村 IT技術ブログへ

コメント