Mozilla SSL Configuration Generator でSSL楽々設定


黙っていてもQualys SSL LABS SSL Server TestでA評価を貰えるKUSANAGIですが、できればWEAKという文字列は見たくないもの。そこで、nginxのconfigをいい感じにジェネレートしてくれるMozilla SSL Configuration Generatorの力を借りることに。

Get Started with HTTP/2

現在のミドルウェア・ライブラリのバージョン確認

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="暗号技術のすべて"]