常用參數
- ssl_certificate
- 服務器證書
- ssl_certificate_key
- 服務器私鑰
- sl_session_cache shared:SSL:10m;
- 設置ssl/tls會話緩存的類型和大小
- shared
- 所有工作進程之間共享緩存:緩存大小以字節為單位指定;一兆字節可以存儲大約4000個session。每個共享緩存都應該有一個任意名稱。具有相同名稱的緩存可以用於多個虛擬服務器
- off
- 嚴禁使用session緩存:nginx明確告訴客戶端session可能不會被重用
- none
- session緩存的使用被禁止:nginx告訴客戶端session可能會被重用,但實際上並不會將session參數存儲在緩存中
- builtin
- 在OpenSSL中構建的緩存:僅由一個工作進程使用。緩存大小在session中指定。如果沒有給出大小,則等於20480個會話
- ssl_session_timeout
- 客戶端可以重用會話緩存中ssl參數的過期時間
- ssl_protocols
- 用於啟動特定的加密協議,nginx在1.16.x版本默認是ssl_protocols TLSv1 TLSv1.1 TLSv1.2,TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 現在還有很多地方在用但有不少被攻擊的漏洞
- ssl_ciphers
- 選擇加密套件,不同的瀏覽器所支持的套件可能會不同。這里指定的是OpenSSL庫能夠識別的寫法,你可以通過 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(后面是你所指定的套件加密算法) 來看所支持算法
- 加密套件之間用冒號分隔,加密套件前有感嘆號的表示必須廢棄
- ssl_prefer_server_ciphers on
- 設置協商加密算法時,優先使用我們服務端的加密套件,而不是客戶端瀏覽器的加密套件
配置演示
注意:nginx的ssl配置在默認配置文件注釋里是可以找到的
server {
listen 443 ssl;
server_name _;
ssl_certificate /opt/ssl/cert.pem;
ssl_certificate_key /opt/ssl/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}
