要在Nginx服务器上启用SSL,您需要完成以下步骤:
首先,您需要获取SSL证书和私钥文件。您可以从以下途径获取: - 从证书颁发机构(CA)如Let's Encrypt、DigiCert等购买 - 使用Let's Encrypt免费证书 - 自签名证书(仅用于测试)
在Nginx配置文件中(通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/your-site
),添加以下SSL配置:
server {
listen 443 ssl;
server_name yourdomain.com;
# 证书文件路径
ssl_certificate /path/to/your_domain.crt;
ssl_certificate_key /path/to/your_domain.key;
# 启用SSL会话缓存以提高性能
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 指定支持的协议和密码套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
ssl_prefer_server_ciphers on;
# 其他服务器配置...
location / {
root /var/www/html;
index index.html;
}
}
将所有HTTP流量重定向到HTTPS:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
# 启用HTTP严格传输安全(HSTS)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# 启用OCSP Stapling提高SSL验证性能
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 禁用不安全的老旧SSL协议
ssl_protocols TLSv1.2 TLSv1.3;
测试Nginx配置:
sudo nginx -t
重新加载Nginx配置:
sudo systemctl reload nginx
使用以下工具验证您的SSL配置:
- SSL Labs测试工具
- 命令行工具:
bash
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
如果您想使用Let's Encrypt免费证书,可以安装Certbot:
# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 获取并安装证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 设置自动续期
sudo certbot renew --dry-run
这样您的Nginx服务器就成功启用了SSL/TLS加密连接。