Nginx部署SSL证书完整图文教程轻松实现HTTPS加密
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
本文原创,未经授权禁止转载
随着互联网安全意识的日益增强,HTTPS 已不再是“加分项”,而是现代网站运营的基础标配,无论是提升用户信任度、强化 SEO 排名,还是防范中间人攻击与数据窃听,部署 SSL/TLS 证书都至关重要,而作为高性能、高并发首选的 Web 服务器——Nginx,其配置 SSL 证书的过程简洁高效,是运维人员必须掌握的核心技能之一。
本文将从零开始,手把手带你完成在 Nginx 中部署 SSL 证书的全流程,并提供安全加固建议与自动化维护方案,助你轻松构建安全可靠的 HTTPS 网站。
第一步:获取你的 SSL 证书
SSL 证书由权威证书颁发机构(CA)签发,常见的包括:
- 免费证书:推荐 Let’s Encrypt,支持自动化签发与续期,适合个人项目或中小企业。
- 商业证书:如 DigiCert、GeoTrust、阿里云 SSL、腾讯云 SSL 等,提供更高级别的验证(OV/EV)、技术支持与保险保障。
获取方式:
✅ Let’s Encrypt(推荐新手)
使用官方工具 Certbot 可一键申请并自动配置:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot 会自动修改 Nginx 配置并设置定时任务续期,省心省力。
✅ 手动申请商业证书
- 生成私钥与 CSR(证书签名请求):
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
- 提交 CSR 至 CA 平台,完成域名所有权验证(DNS 或文件验证)。
- 下载签发的证书包,通常包含三个关键文件:
- 证书文件:
yourdomain.crt或yourdomain.pem - 私钥文件:
yourdomain.key(⚠️ 绝对保密,切勿外泄!) - 中间证书链:
ca-bundle.crt或chain.pem
- 证书文件:
💡 建议:即使使用 Let’s Encrypt,也应了解手动流程,便于故障排查与迁移。
第二步:上传并管理证书文件
将下载的证书文件上传至服务器,推荐统一存放于 /etc/nginx/ssl/ 目录:
sudo mkdir -p /etc/nginx/ssl sudo cp yourdomain.* /etc/nginx/ssl/
安全权限设置:
私钥文件必须严格限制访问权限:
sudo chmod 600 /etc/nginx/ssl/yourdomain.key sudo chown root:root /etc/nginx/ssl/yourdomain.key
🔐 最佳实践:避免将证书放在 Web 根目录下;定期审计文件权限;使用符号链接便于版本管理。
第三步:配置 Nginx 启用 HTTPS
进入站点配置目录(通常为 /etc/nginx/sites-available/ 或 /etc/nginx/conf.d/),编辑你的虚拟主机配置文件,yourdomain.com.conf。
基础 HTTPS 配置模板:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL 证书路径
ssl_certificate /etc/nginx/ssl/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
ssl_trusted_certificate /etc/nginx/ssl/ca-bundle.crt;
# 安全协议与加密套件(推荐配置)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 会话缓存优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
# HSTS 安全头(强烈建议启用)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# OCSP Stapling(提升性能与隐私)
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 站点根目录
root /var/www/yourdomain;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
强制 HTTP 跳转 HTTPS(SEO 友好 & 安全必备)
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
# 301 永久重定向至 HTTPS
return 301 https://$host$request_uri;
}
🌐 小贴士:若使用 CDN(如 Cloudflare),请确认是否已在 CDN 层面启用 HTTPS,避免配置冲突。
第四步:测试配置并重启服务
在正式上线前,务必进行语法校验:
sudo nginx -t
✅ 若输出 syntax is ok 和 test is successful,即可安全重载配置:
sudo systemctl reload nginx # 或 sudo nginx -s reload
验证部署是否成功:
- 浏览器访问
https://yourdomain.com,确认地址栏出现 🔒 锁形图标。 - 点击锁图标 → “证书信息”,检查有效期与颁发机构。
- 使用在线工具 SSL Labs Test 进行全方位安全评分(目标:A+)。
第五步:自动化续期与持续监控
SSL 证书均有有效期(Let’s Encrypt 为 90 天),手动更新极易遗忘导致服务中断。
自动续期方案(Certbot 示例):
Certbot 默认已创建定时任务,可通过以下命令查看:
sudo crontab -l | grep certbot
若需手动添加(推荐每周执行):
0 3 * * 0 /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
⚙️
--post-hook参数确保续期后自动重载 Nginx,实现零感知更新。
监控与告警建议:
- 使用 Prometheus + Blackbox Exporter 监控 HTTPS 状态码与证书过期时间。
- 设置邮件或企业微信告警,提前 7~15 天提醒续期。
- 定期使用 Mozilla SSL Config Generator 更新加密策略。
安全无小事,部署即责任
在 Nginx 上部署 SSL 证书并非难事,但真正的挑战在于持续的安全维护与最佳实践落地,一份配置良好的 HTTPS 不仅能守护用户数据、提升品牌形象,更能获得搜索引擎的青睐,在竞争中占据先机。
立即行动,为你的网站穿上坚不可摧的“数字铠甲”——因为在这个时代,没有 HTTPS 的网站,等于在裸奔。
📌 相关阅读推荐:
🔗 [Nginx 性能调优实战指南]
🔗 [Let’s Encrypt 自动化运维最佳实践]
🔗 [HTTPS 安全配置 A+ 攻略]
原创作者:AI 助理 · 技术内容组
更新日期:2025年4月
版权声明:转载请注明出处,保留原文链接。


