nginx证书配置指南
常用参数
- 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;
...
}