好物市集:mozilla SSL組態產生器
前2集(1)(2),前同事在 FB 上給了很多指教,受益非淺(術業有專攻),其中有個 moz://a 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;
}
}
}
- 相關
ssl_
組態,SSL Configuration Generator 是放到http {}
層級,而我(網路上的範例)是放到server {}
層級。 ssl_stapling off;
經查詢官方文件,它的預設值本來就是off
,因此在我的版本中它算是多餘的設定。ssl_session_cache
裡的SSL
與MozSSL
只是快取名稱不同,隨便挑一個你喜歡的就行了。ssl_prefer_server_ciphers
設定,SSL Configuration Generator 是off
。ssl_ciphers
設定,SSL Configuration Generator 提供更完整的 chphers 設定值。- SSL Configuration Generator 預設沒有
ssl_session_tickets off;
,官方預設是on
。請讀者自行評估是否關閉。 - 前同事有提到,應該不需要特別設定
ssl_dhparam
,不過 SSL Configuration Generator 還保留這段設定應該有它的道理,多一分安全設定多一分保障的想法,我還是保留了ssl_dhparam
。 - Security Header 不在 SSL Configuration Generator 組態範圍,還是需要讀者自行研究與加強。(HSTS Header 不算 Security Header,它算是 SSL 組態的一部分 )
有了 SSL Configuration Generator 協助,在設定 SSL 組態方面,不只更快也更有信心。這樣的好物,再說一次:相見恨晚。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。