Mozilla SSL Configuration Generator でSSL楽々設定
黙っていてもQualys SSL LABS SSL Server TestでA評価を貰えるKUSANAGIですが、できればWEAKという文字列は見たくないもの。そこで、nginxのconfigをいい感じにジェネレートしてくれるMozilla SSL Configuration Generatorの力を借りることに。
現在のミドルウェア・ライブラリのバージョン確認
Mozilla SSL Configuration Generator はApache Nginx Lighttpd HAProxy AWS ELBからそれぞれモダンな設定、古い設定、その中間の設定をよろしくジェネレートしてくれる。HSTSの有効 無効もチェックボックスを入れるだけ。
その前に、設定対象サーバーへログインして、現在のミドルウェア・ライブラリのバージョン確認をしてみましょう。なお、KUSANAGIをお使いの方はご存知かと思いますが、NginxとApacheどっちで動いていても同じコマンドで確認できるように、下のコマンドではプロセス置換を使ってます。 lsof コマンドがインストールされていなければ、 root ユーザーで yum install lsof しましょう。
Nginxのバージョン確認
$ rpm -qa | egrep $(sudo lsof -i:443 | egrep root | awk '{print $1}') kusanagi-nginx-1.13.5-1.noarch
OpenSSLのバージョン確認
$ rpm -qa | egrep -i openssl openssl-libs-1.0.2k-8.el7.x86_64 kusanagi-openssl-1.0.2l-1.noarch <- コレ! openssl-1.0.2k-8.el7.x86_64 openssl-devel-1.0.2k-8.el7.x86_64
それぞれのバージョン番号を確認したら、ジェネレートする。
こぴぺ
server { listen 80 default_server; listen [::]:80 default_server; # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response. return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate ssl_certificate /path/to/signed_cert_plus_intermediates; ssl_certificate_key /path/to/private_key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # modern configuration. tweak to your needs. ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=15768000; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ## verify chain of trust of OCSP response using Root CA and Intermediate certs ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates; resolver <IP DNS resolver>; .... }
こんな風にジェネレートされますが、せっかくバーチャルホスト設定があるのですから、何も考えずにこれをコピペせず、
ssl_protocols
ssl_ciphers
のそれぞれの行をよろしく編集しましょう。本来であれば、暗号プロトコルや暗号セットを正しく理解するのが一番ですが、、、。
[amazonjs asin=”4798148814″ locale=”JP” title=”暗号技術のすべて”]