要启用SSL/TLS加密,您需要在Nginx配置文件中进行以下设置:
server {
listen 443 ssl;
server_name example.com;
# 证书和私钥路径
ssl_certificate /path/to/your_domain.crt;
ssl_certificate_key /path/to/your_domain.key;
# 启用会话复用以减少握手开销
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 其他配置...
}
ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的SSL/TLS版本
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';
# 生成DH参数: openssl dhparam -out /etc/nginx/dhparam.pem 2048
ssl_dhparam /etc/nginx/dhparam.pem;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
ssl_early_data on;
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /path/to/wildcard.crt;
ssl_certificate_key /path/to/wildcard.key;
# 其他配置...
}
建议使用Let's Encrypt和certbot工具自动管理证书:
# 安装certbot
sudo apt-get install certbot python3-certbot-nginx
# 获取并安装证书
sudo certbot --nginx -d example.com -d www.example.com
# 设置自动续期
sudo certbot renew --dry-run
配置完成后,使用以下命令验证并重新加载Nginx:
sudo nginx -t # 测试配置
sudo systemctl reload nginx # 重新加载配置
使用SSL Labs测试工具(https://www.ssllabs.com/ssltest/)验证您的SSL配置安全性。
如需更高级的配置,可以考虑启用TLS 1.3的0-RTT特性或配置客户端证书认证等安全措施。