nginx 部署
在 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证书工具 进行全链诊断。
需要注意的情况
- 证书文件路径必须为绝对路径;若使用相对路径,Nginx 会相对于其工作目录(通常为编译时指定的
--prefix)解析,易导致 403 或 SSL handshake failed - 私钥若受密码保护(encrypted private key),Nginx 启动时会阻塞等待输入,不适用于生产环境;应使用
openssl rsa -in encrypted.key -out decrypted.key解密 - 若站点同时提供国密支持,需使用支持 SM2/SM3/SM4 的定制版 Nginx(如基于 OpenSSL 3.0+ 或 gmssl),并配置
ssl_certificate为国密证书链,ssl_certificate_key为 SM2 私钥 —— 此类部署需搭配 国密SSL证书 - Let’s Encrypt 等 ACME 自动化证书(如通过 Certbot)部署后,务必确认 renewal-hook 中包含
nginx -s reload,否则证书更新后 Nginx 仍加载旧证书



京公网安备11010502031690号
网站经营企业工商营业执照
















