Nginx 中 HTTPS 配置如何申请并安装免费的 SSL 证书

作者:袖梨 2026-08-23

Nginx启用HTTPS推荐用Let’s Encrypt免费证书配合certbot自动部署,支持一键申请、配置及自动续期;也可手动安装云平台证书,需正确配置ssl_certificate等指令并确保Nginx编译含--with-http_ssl_module模块。

在 Nginx 中启用 HTTPS,核心是拿到合法 SSL 证书并正确配置。目前最主流、最推荐的方式是使用 Let’s Encrypt 免费证书,配合 certbot 工具自动申请和部署,整个过程基本无需手动操作证书文件。

用 certbot 一键申请并配置(推荐)

这是最快捷、最可靠的方式,certbot 会自动完成验证、申请、写入 Nginx 配置、重启服务,还内置自动续期机制。

  1. 确保域名已正确解析到服务器 IP,且服务器 80 端口对公网开放(Let’s Encrypt 通过 HTTP 验证域名控制权)
  2. 安装 certbot(Ubuntu/Debian 示例):sudo apt update && sudo apt install certbot python3-certbot-nginx
  3. 运行命令直接部署(以 example.com 为例):sudo certbot --nginx -d example.com -d www.example.com
  4. 执行后会提示选择是否强制跳转 HTTPS,建议选“2”启用 301 重定向
  5. certbot 自动修改配置、部署证书,并添加 systemd 定时任务(每天凌晨自动检测续期)

手动安装已有证书(如腾讯云/阿里云下载的)

适用于从云平台申请后手动上传证书的场景,需注意文件格式和路径配置。

  1. 下载证书包后解压,取两个关键文件:xxx.crt(或 bundle.crt)xxx.key
  2. 将这两个文件上传到服务器固定目录,例如:/usr/local/nginx/ssl/example.com.crt/usr/local/nginx/ssl/example.com.key
  3. 编辑 Nginx 配置(如 /etc/nginx/conf.d/default.conf),添加或修改 server 块:

server {

listen 443 ssl;

server_name example.com;

ssl_certificate /usr/local/nginx/ssl/example.com.crt;

ssl_certificate_key /usr/local/nginx/ssl/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;

# 其他常规配置...

}

  1. 务必再加一个 80 端口 server 块实现 HTTP 跳转:return 301 https://$host$request_uri;
  2. 检查语法:nginx -t;无误后重载:nginx -s reload

确认 Nginx 支持 SSL 模块

如果执行 nginx -V 输出中没有 --with-http_ssl_module,说明当前 Nginx 编译时未包含 SSL 支持,必须补上。

  1. 进入 Nginx 源码目录(如 /usr/local/src/nginx-1.24.0
  2. 运行:./configure --prefix=/usr/local/nginx --with-http_ssl_module
  3. 执行 make(不要 make install),完成后替换原 nginx 二进制文件:cp objs/nginx /usr/local/nginx/sbin/
  4. 再次运行 nginx -V 确认模块已启用

补充说明:证书有效期与续期

Let’s Encrypt 证书有效期为 90 天,但 certbot 默认已配置自动续期(systemd timer 或 cron)。可手动测试续期是否正常:sudo certbot renew --dry-run。若使用云平台证书,则需在到期前重新申请并手动更新配置。

相关文章

精彩推荐