如何在Nginx服务器上申请并配置SSL证书实现HTTPS安全访问
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
当然可以,以下是根据您提供的内容进行错别字修正、语句润色、逻辑补充和语言原创性提升后的完整文章版本,整体风格更专业流畅,同时保持技术准确性,并增强了可读性和表达深度。
随着互联网技术的迅猛发展,网络安全已成为网站建设和运维中不可忽视的重要环节,用户隐私数据泄露、中间人攻击等安全事件频发,促使越来越多的网站转向采用 HTTPS(HyperText Transfer Protocol Secure)协议,以保障数据传输过程中的机密性与完整性,而实现 HTTPS 的核心技术之一,便是 SSL/TLS 证书。
Nginx 作为当前最流行的高性能 Web 服务器之一,广泛应用于各类高并发网站、API 接口服务及反向代理场景,本文将系统地介绍如何在基于 Nginx 的环境中申请 SSL 证书,并完成完整的 HTTPS 配置,帮助开发者和运维人员轻松实现网站的安全加密访问。
SSL 证书的基本概念
SSL(Secure Sockets Layer,安全套接层)及其继任者 TLS(Transport Layer Security,传输层安全),是用于在客户端与服务器之间建立加密通信通道的安全协议,SSL 证书本质上是一种数字凭证,由受信任的证书颁发机构(Certificate Authority, 简称 CA)签发,主要用于:
- 验证网站身份的真实性;
- 在浏览器与服务器之间启用加密连接;
- 防止数据被窃听、篡改或劫持。
当用户通过 HTTPS 访问一个部署了有效 SSL 证书的网站时,所有传输的数据都会经过加密处理,极大降低了信息泄露和网络钓鱼的风险。
目前主流的证书颁发机构包括 Let’s Encrypt、DigiCert、Sectigo、阿里云、腾讯云 等。Let’s Encrypt 因其完全免费、自动化程度高、社区支持完善,成为个人开发者和中小型项目的首选方案。
⚠️ 注意:虽然“SSL”这一术语仍被广泛使用,但实际应用中已普遍升级为更安全的 TLS 协议(如 TLS 1.2 和 TLS 1.3),现代意义上的“SSL 证书”通常指的是 TLS 证书。
准备工作:确保环境就绪
在开始申请和配置 SSL 证书之前,请确认以下前提条件均已满足:
-
拥有一个已备案且可解析的域名
SSL 证书绑定的是域名而非 IP 地址,因此必须持有合法注册的域名,并已完成 ICP 备案(中国大陆地区要求)。 -
服务器已安装并运行 Nginx
可通过以下命令检查 Nginx 是否已正确安装:nginx -v
若未安装,请参考官方文档或包管理器进行部署。
-
域名已正确解析至服务器公网 IP
登录您的 DNS 服务商控制台(如阿里云、腾讯云、Cloudflare 等),设置 A 记录或 CNAME 记录,确保域名能正常指向您的服务器地址。 -
开放必要的网络端口
- 80 端口(HTTP):用于 Let’s Encrypt 的 HTTP-01 挑战验证;
- 443 端口(HTTPS):用于提供加密服务;
请检查防火墙(如 iptables、ufw)或云平台安全组规则,确保这两个端口处于开放状态。
使用 Let’s Encrypt 免费申请 SSL 证书
Let’s Encrypt 是一个非营利性的证书机构,致力于推动全网 HTTPS 普及,它提供的证书有效期为 90 天,但支持自动化续期机制,配合工具如 Certbot 可实现“一次配置,长期无忧”。
推荐使用 Certbot 工具来简化证书申请与 Nginx 集成流程。
步骤 1:安装 Certbot 及 Nginx 插件
以 Ubuntu 系统为例(其他 Linux 发行版类似):
sudo apt update sudo apt install certbot python3-certbot-nginx -y
该命令会安装 Certbot 主程序以及专用于 Nginx 的集成插件,便于后续自动配置。
步骤 2:运行 Certbot 获取证书
执行如下命令启动证书申请流程:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
请将 yourdomain.com
替换为您实际拥有的域名,若您仅需为主域名配置证书,可省略 www
子域名。
运行过程中,Certbot 将提示您输入以下信息:
- 电子邮箱:用于接收到期提醒、安全通知等重要信息;
- 同意服务条款:按提示输入 “A” 表示同意;
- 是否共享邮箱:可根据需要选择否;
随后,Certbot 会自动完成 域名所有权验证(通过 HTTP 请求特定文件),并在验证成功后生成证书文件并存储于标准路径下。
步骤 3:自动更新 Nginx 配置
Certbot 不仅负责获取证书,还会智能修改 Nginx 的站点配置文件,自动添加 HTTPS 支持和强制跳转规则,典型的配置如下所示:
server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { root /var/www/html; index index.html; } } # 强制 HTTP 跳转 HTTPS server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
上述配置实现了:
- 启用 SSL 加密监听;
- 指定证书与私钥路径;
- 使用现代加密套件提升安全性;
- 所有 HTTP 请求自动重定向至 HTTPS,保障全站加密。
测试与验证部署效果
完成配置后,需重新加载 Nginx 使更改生效:
sudo systemctl reload nginx
接着打开浏览器访问 https://yourdomain.com
,观察以下几点:
- 地址栏是否显示 绿色锁形图标;
- 是否提示“连接是安全的”;
- 页面能否正常加载无混合内容警告(Mixed Content Warning);
为进一步验证证书质量与安全性等级,建议使用权威在线工具检测:
🔗 SSL Labs SSL Test
输入您的域名,系统将对服务器配置进行全面评分(A+ 为最优),并指出潜在风险点,例如弱加密算法、过期协议等。
配置自动续期机制
由于 Let’s Encrypt 证书仅有 90 天有效期,手动续期容易遗忘导致证书过期,影响网站可用性,幸运的是,Certbot 安装后通常会自动创建 cron 定时任务,定期检查即将过期的证书并尝试续签。
您可以手动测试续期功能是否正常工作:
sudo certbot renew --dry-run
如果输出中没有错误信息,则表示自动续期机制配置成功,系统默认会在证书到期前 30 天发起续签请求,整个过程无需人工干预。
✅ 提示:建议每月检查一次日志
/var/log/letsencrypt/letsencrypt.log
,确保自动任务持续稳定运行。
注意事项与最佳实践
为了确保证书申请与部署过程顺利,还需注意以下关键事项:
-
保持服务器时间准确
使用 NTP 时间同步服务,避免因时间偏差导致证书验证失败。sudo timedatectl set-ntp true
-
多域名或子域名可考虑通配符证书
若需保护多个子域名(如blog.example.com
、api.example.com
),可申请 Wildcard Certificate(泛域名证书),但需通过 DNS-01 验证方式 完成,不能使用 Nginx 插件直接操作。 -
企业级项目建议选用 OV 或 EV 证书
对于金融、电商、政务类网站,推荐购买 组织验证型(OV)或 扩展验证型(EV)证书,这类证书不仅具备更强的身份认证能力,还能在浏览器中显示公司名称,显著增强用户信任感。 -
定期备份证书与私钥
尽管 Certbot 支持自动恢复,但仍建议定期备份 `/etc/lets