SSLサーバーのテストは Qualys SSL Report を利用します。
nginxのデフォルト設定だと評価が低いので評価を上げる設定を入れていきます。
テストをする際は「Do not show the results on the boards」にチェックを入れて実施します。チェックを入れないと結果が公開されてしまいます。
黄色、赤色を減らす
「DH 1024 bits FS WEAK」暗号に利用する鍵長が短いので2048bitの鍵を作成します。
# cd /etc/nginx/ssl # openssl dhparam -out dbparam.pem 2048
「Server negotiated HTTP/2 with blacklisted suite」FireFoxでネゴシエーションに失敗しています。ciphersでAESGCMの優先度をHIGHより高く設定します。エラーは出ますが私の環境では正常に表示されるようです。
ssl_ciphers AESGCM:HIGH:!aNULL:!MD5;
「Incorrect certificate because this client doesn’t support SNI」SNIをサポートしていない。名前ベースバーチャルホストを利用するのが標準的になりました。古い環境なので切り捨てます。
「Server closed connection」古い環境なので切り捨てます。
「Client does not support DH parameters > 1024 bits」古い環境なので切り捨てます。
設定
server { listen 80; listen 443 ssl http2 ; server_name rin-ka.net; #HTTP/HTTPS 共通化の場合はONにしない #ssl on; #SSLセッションを1分キャッシュさせる ssl_session_cache shared:SSL:1m; #SSLセッションのタイムアウト ssl_session_timeout 5m; #サーバ指定のcipherにする ssl_prefer_server_ciphers on; #利用するcipherを指定 ssl_ciphers ECDHE:HIGH:!aNULL:!MD5; #利用するプロトコルを指定する ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #鍵長を 2048ビットにする ssl_dhparam /etc/nginx/ssl/dbparam.pem; #Strict Transport Security を長期(1年)に指定 add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; ssl_certificate /etc/nginx/ssl/rin-ka-fullchain.pem; ssl_certificate_key /etc/nginx/ssl/rin-ka-privkey.pem; }
「A+」の評価が得られました。