在 Nginx 中部署 SSL/TLS 证书,核心是配置 server 块启用 HTTPS,并正确指定证书文件路径。需确保 Nginx 编译时启用了 http_ssl_module(默认开启),且操作系统已安装 OpenSSL 库。
典型配置如下:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/fullchain.pem; # 包含域名证书 + 中间证书(PEM 格式)
ssl_certificate_key /path/to/privkey.pem; # 私钥文件(建议权限设为 600)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
其中 fullchain.pem 必须按「域名证书 → 中间证书」顺序拼接(不能包含根证书);私钥必须与证书公钥匹配,可通过 openssl x509 -noout -modulus -in cert.pem | openssl md5 和 openssl rsa -noout -modulus -in key.pem | openssl md5 校验一致性。
HTTP 到 HTTPS 的强制跳转推荐使用 return 301(而非 rewrite):
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}部署后需重载服务:nginx -t && nginx -s reload。验证可用 openssl s_client -connect example.com:443 -servername example.com 检查证书链完整性,或使用在线工具如 ssl证书工具 进行全链诊断。
--prefix)解析,易导致 403 或 SSL handshake failedopenssl rsa -in encrypted.key -out decrypted.key 解密ssl_certificate 为国密证书链,ssl_certificate_key 为 SM2 私钥 —— 此类部署需搭配 国密SSL证书nginx -s reload,否则证书更新后 Nginx 仍加载旧证书加密您的网站,赢得客户信任!