server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/private.key;
# 安全协议配置
ssl_protocols TLSv1.2 TLSv1.3;
# 加密套件配置
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 会话缓存优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
确保中间证书正确包含:
ssl_certificate /path/to/fullchain.pem; # 包含服务器证书和中间证书
ssl_certificate_key /path/to/private.key;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/trusted_certs.pem; # CA根证书+中间证书
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
生成强DH参数:
openssl dhparam -out /etc/nginx/dhparam.pem 4096
Nginx配置:
ssl_dhparam /etc/nginx/dhparam.pem;
推荐使用Certbot进行自动化管理:
# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书并自动配置Nginx
sudo certbot --nginx -d example.com -d www.example.com
设置cron任务:
0 12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
SAN证书配置示例:
server {
listen 443 ssl;
server_name example.com www.example.com api.example.com;
ssl_certificate /path/to/multidomain.crt;
ssl_certificate_key /path/to/multidomain.key;
}
ssl_session_tickets on;
ssl_session_ticket_key /path/to/ticket.key;
listen 443 ssl http2;
ssl_early_data on;
使用openssl检查证书:
openssl x509 -enddate -noout -in /path/to/certificate.pem
server {
listen 127.0.0.1:8080;
location /nginx_status {
stub_status;
access_log off;
allow 127.0.0.1;
deny all;
}
}
证书链不完整:
协议/加密套件不匹配:
证书过期:
性能问题:
通过以上配置和管理策略,可以构建一个安全、高效且易于维护的Nginx HTTPS服务环境。