添加以下行
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
在当今高度互联的网络环境中,网站安全已成为每一位运维工程师和开发人员不可忽视的核心议题,随着HTTPS协议的全面普及,SSL(Secure Sockets Layer)证书作为保障数据传输加密的关键技术,已广泛应用于各类Web服务中,Nginx作为全球最受欢迎的高性能Web服务器之一,凭借其轻量级、高并发处理能力以及灵活的配置机制,成为实现HTTPS加密访问的理想平台。
本文将为您系统梳理如何在Nginx服务器上完成SSL证书的申请、配置与自动化维护全过程,涵盖免费证书(Let’s Encrypt)和商业证书两种主流场景,帮助您快速构建一个安全、可信、合规的网站环境。
SSL证书的基本概念
SSL证书是一种数字身份凭证,用于在客户端(如浏览器)与服务器之间建立加密通信通道,防止敏感信息在传输过程中被窃听或篡改,当用户访问启用了SSL的网站时,地址栏会显示“https://
”前缀及锁形图标,表明当前连接受到加密保护。
目前常见的SSL证书类型主要包括以下三种:
-
DV证书(域名验证型)
仅验证域名所有权,签发速度快,适合个人博客、测试站点或小型项目使用。 -
OV证书(组织验证型)
在验证域名的基础上,还需审核企业真实身份信息,适用于需要展示机构权威性的企业官网。 -
EV证书(扩展验证型)
提供最高级别的身份验证,浏览器地址栏会直接显示公司名称(部分现代浏览器已弱化该功能),显著提升用户信任度,常用于金融、电商等对安全性要求极高的行业。
⚠️ 小贴士:对于大多数中小型网站而言,Let’s Encrypt 提供的免费DV证书是性价比最高的选择,其有效期为90天,支持通过工具自动续期,已被主流浏览器广泛信任。
部署前的准备工作
在开始配置SSL之前,请确认以下前提条件均已满足:
-
✅ 拥有已备案并解析至服务器的域名
SSL证书必须绑定具体域名,且该域名需能正常访问。 -
✅ Nginx 已正确安装并运行
可通过命令检查版本:nginx -v
建议使用较新稳定版(如1.18+),以获得更好的TLS支持。
-
✅ DNS 解析已生效
确保A记录
或CNAME记录
正确指向您的服务器公网IP。 -
✅ 开放 HTTPS 所需端口
默认情况下,HTTPS 使用 443端口,请在防火墙或云服务商的安全组策略中放行该端口。 -
✅ 具备 sudo 权限的用户账户
后续操作涉及系统级文件修改,需使用管理员权限执行。
获取并安装 Let’s Encrypt 免费证书(推荐方式)
安装 Certbot 工具
Certbot 是由电子前沿基金会(EFF)开发的官方客户端,专为 Let’s Encrypt 设计,支持多种插件自动化管理证书。
Ubuntu/Debian 系统:
sudo apt update sudo apt install certbot python3-certbot-nginx -y
CentOS/RHEL 系统(基于 yum):
sudo yum install epel-release -y sudo yum install certbot python3-certbot-nginx -y
💡 注意:CentOS 8+ 用户建议切换至
dnf
包管理器,或启用 EPEL 源后再进行安装。
自动申请并部署证书
利用 Nginx 插件,Certbot 可自动检测站点配置、生成证书并更新 Nginx 配置以启用 HTTPS。
执行以下命令(替换为您的实际域名):
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
运行过程中,Certbot 会提示您填写邮箱(用于紧急通知)、同意服务条款,并询问是否将 HTTP 请求自动重定向至 HTTPS —— 强烈建议选择“是”。
完成后,Certbot 将:
- 向 Let’s Encrypt 发起证书请求;
- 验证域名控制权(通过HTTP-01挑战);
- 自动修改 Nginx 配置,启用SSL;
- 添加 HTTP 到 HTTPS 的 301 跳转规则。
验证证书是否生效
打开浏览器,访问:
https://yourdomain.com
若看到绿色锁标志且无任何安全警告,则说明SSL已成功启用。
也可通过在线工具进一步验证,
这些工具可检测协议兼容性、密钥强度、证书链完整性等关键指标。
手动安装第三方SSL证书(适用于阿里云、腾讯云等CA机构)
若您购买了商业SSL证书(如DigiCert、GeoTrust、GlobalSign 或国内厂商产品),则需手动上传并配置。
下载证书文件
登录证书颁发机构平台(如阿里云SSL证书控制台),下载对应Nginx格式的证书包,通常包含以下文件:
文件名 | 说明 |
---|---|
yourdomain.com.crt 或 .pem |
服务器公钥证书 |
yourdomain.com.key |
私钥文件(务必妥善保管) |
chain.crt 或 ca-bundle.crt |
中间证书(用于构建完整信任链) |
🔐 安全提示:私钥文件(
.key
)严禁泄露,建议设置权限为600
。
上传证书至服务器
创建专用目录存放证书文件:
sudo mkdir -p /etc/nginx/ssl/yourdomain/ sudo cp yourdomain.com.crt /etc/nginx/ssl/yourdomain/ sudo cp yourdomain.com.key /etc/nginx/ssl/yourdomain/ sudo cp chain.crt /etc/nginx/ssl/yourdomain/
设置权限保护私钥:
sudo chmod 600 /etc/nginx/ssl/yourdomain/*.key sudo chown -R root:root /etc/nginx/ssl/yourdomain/
配置 Nginx 支持 HTTPS
编辑站点配置文件(路径可能为 /etc/nginx/sites-available/your-site
或 /etc/nginx/conf.d/your-site.conf
),添加如下 server 块:
server { listen 443 ssl http2; server_name yourdomain.com www.yourdomain.com; # 指定证书与私钥路径 ssl_certificate /etc/nginx/ssl/yourdomain/yourdomain.com.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain/yourdomain.com.key; # 若有中间证书,建议合并为主证书的一部分 # 或单独指定 bundle 文件 ssl_trusted_certificate /etc/nginx/ssl/yourdomain/chain.crt; # 推荐使用的安全参数 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; keepalive_timeout 75s; # 站点根目录及其他设置 root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } # 启用HSTS(可选,谨慎启用) add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; }
📌 提示:为了提升性能与安全性,建议开启
HTTP/2
和会话缓存;同时可考虑启用 HSTS 头部,强制浏览器始终使用 HTTPS。
配置 HTTP 自动跳转 HTTPS(推荐)
新增一个监听80端口的 server 块,用于重定向:
server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
此设计可确保所有明文请求均被引导至加密通道