SSL Labs で A+を取り、全ての項目を満点にした
CentOS8 初期状態
Key Exchange
DHkey を複雑にすればよいみたいです。
確認すると、4096bit あれば満点になりそう
デフォルトでは使用されていませんでした。
openssl dhparam 4096 -out dhparam.pem
作成になかなか時間がかかります。
ssl_dhparam /etc/nginx/dhparam.pem;
Cipher Strength
week になってる ciper を徐々に削っていきます。
満点を取るには 256bit 以上の鍵である必要があります。
ssl_prefer_server_ciphers on;
することでサーバーが指定する cipher 以外を使わせなくすることができます。
ssl_ciphers HIGH:!CAMELLIA:!AES128:!SHA256:!SHA1:!SHA384:!ARIA128:!RSA;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1;
TLS1.3 の cipherh は nginx のssl_chipers
で設定することができません。
Openssl の conf を編集して対応させます。
※OpenSSL を他のサービスで利用している場合には注意が必要です
/etc/pki/tls/openssl.cnf
[ crypto_policy ]
.include /etc/crypto-policies/back-ends/opensslcnf.config
crypto_policy
は別ファイルに記述しているようです。
/etc/crypto-policies/back-ends/opensslcnf.config
#Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256
Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
上から下に書き換えます。
HSTS を有効にする
ブラウザに次回以降 https でアクセスするように伝えるヘッダを送信します。 これを設定すると A から A+になりました。
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
おまけ
OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/sakakinox.net/chain.pem;
DNS CAA
DNS に CAA レコードを追加した。
;; ANSWER SECTION:
sakakinox.net. 3600 IN CAA 0 issue "letsencrypt.org"
RSA-key-size
証明書自体も複雑にした
certbot renew --force-renewal --rsa-key-size 4096
参考サイト
おしまい