好物市集:mozilla SSL組態產生器

好物市集:mozilla SSL組態產生器

前2集(1)(2),前同事在 FB 上給了很多指教,受益非淺(術業有專攻),其中有個 moz://a SSL Configuration Generator 好工具,真的是相見恨晚,非常值得介紹給大家。

這個 SSL Configuration Generator 線上服務很簡單:

SSL Configuration Generator
  • Server Software:要產生那個伺服器軟體的組態
  • Mozilla Configuration:組態模式
    • Modern:最嚴僅
    • Intermediate:一般、通用
    • Old:相容性
  • Miscellaneous:其他
    • HTTP Strict Transport Security:是否需要 HSTS 設定
    • OCSP Stapling:是否需要 OCSP Stapling 設定

這樣我就能快速得到一份 NGINX SSL 的組態:

# generated 2025-05-20, Mozilla Guideline v5.7, nginx 1.27.3, OpenSSL 3.4.0, intermediate config, no OCSP
# https://ssl-config.mozilla.org/#server=nginx&version=1.27.3&config=intermediate&openssl=3.4.0&ocsp=false&guideline=5.7

http {

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        http2 on;
        ssl_certificate /path/to/signed_cert_plus_intermediates;
        ssl_certificate_key /path/to/private_key;

        # HSTS (ngx_http_headers_module is required) (63072000 seconds)
        add_header Strict-Transport-Security "max-age=63072000" always;
    }

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ecdh_curve X25519:prime256v1:secp384r1;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;

    # see also ssl_session_ticket_key alternative to stateful session cache
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions

    # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
    ssl_dhparam "/path/to/dhparam";

    # HSTS
    server {
        listen 80 default_server;
        listen [::]:80 default_server;

        return 301 https://$host$request_uri;
    }
}

這是我前一篇自己整合的 NGINX 組態,讓我們討論一下差異:

http {
    server_tokens off;
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        http2 on;
        server_name kkbruce.net;
        ssl_certificate server.crt;
        ssl_certificate_key server.key;
        ssl_dhparam dhparam.pem;
        ssl_session_timeout       1d;
        ssl_session_cache         shared:SSL:10m;
        ssl_protocols             TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers               ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_session_tickets       off;
        ssl_stapling              off;
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options nosniff;
        add_header Cross-Origin-Opener-Policy same-origin;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        location / {
            root html;
            index index.html index.htm;
        }
    }
}
  1. 相關 ssl_ 組態,SSL Configuration Generator 是放到 http {} 層級,而我(網路上的範例)是放到 server {} 層級。
  2. ssl_stapling off; 經查詢官方文件,它的預設值本來就是 off,因此在我的版本中它算是多餘的設定。
  3. ssl_session_cache 裡的 SSLMozSSL 只是快取名稱不同,隨便挑一個你喜歡的就行了。
  4. ssl_prefer_server_ciphers 設定,SSL Configuration Generator 是 off
  5. ssl_ciphers 設定,SSL Configuration Generator 提供更完整的 chphers 設定值。
  6. SSL Configuration Generator 預設沒有 ssl_session_tickets off;,官方預設是 on。請讀者自行評估是否關閉。
  7. 前同事有提到,應該不需要特別設定 ssl_dhparam,不過 SSL Configuration Generator 還保留這段設定應該有它的道理,多一分安全設定多一分保障的想法,我還是保留了 ssl_dhparam
  8. Security Header 不在 SSL Configuration Generator 組態範圍,還是需要讀者自行研究與加強。(HSTS Header 不算 Security Header,它算是 SSL 組態的一部分 )

有了 SSL Configuration Generator 協助,在設定 SSL 組態方面,不只更快也更有信心。這樣的好物,再說一次:相見恨晚。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。