ARTICLE

DMIT HTTPS/SSL 配置:Let's Encrypt 证书申请与续期

在 DMIT 上为 Nginx 配置免费 Let's Encrypt 证书:安装 Certbot、申请、自动续期与 TLS 优化。

为什么需要 HTTPS

HTTPS 通过 TLS 加密客户端与服务器之间的通信,防止数据被窃听或篡改。现代浏览器对未启用 HTTPS 的站点会显示"不安全"警告,影响用户信任与转化。本文介绍在 DMIT 云服务器上为 Nginx 配置免费 Let's Encrypt 证书的方法。

前置条件

  • 已解析域名 A 记录(或 AAAA 记录)到服务器 IP
  • 已安装 Nginx 并能正常访问 80 端口
  • 服务器防火墙已放行 80 与 443 端口
  • 能通过 SSH 登录服务器(参考《SSH 安全加固》)

安装 Certbot

# Debian/Ubuntu
apt update
apt install certbot python3-certbot-nginx -y

# 验证安装
certbot --version

申请证书并自动配置 Nginx

Certbot 的 Nginx 插件可自动修改站点配置并启用 HTTPS:

certbot --nginx -d example.com -d www.example.com

按提示输入邮箱、同意条款后,Certbot 会自动完成以下操作:申请证书、修改 Nginx 配置、配置 80→443 重定向、设置自动续期。

手动指定 Webroot(可选)

certbot certonly --webroot -w /var/www/html -d example.com

验证自动续期

Let's Encrypt 证书有效期为 90 天,Certbot 通过 systemd timer 自动续期。手动测试续期逻辑:

certbot renew --dry-run

如果输出包含 "Congratulations" 表示续期配置正确。实际续期由系统定时器静默完成,无需人工干预。

Nginx TLS 配置建议

证书申请后,建议优化 Nginx 的 TLS 配置以兼顾安全与性能:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000" always;

开启 HSTS 后浏览器会强制使用 HTTPS,但需确保证书长期有效,否则会导致无法访问。

多域名与通配符证书

单个证书可包含多个域名(SAN)。通配符证书需用 DNS 验证:

certbot certonly --manual --preferred-challenges=dns -d "*.example.com"

按提示在域名 DNS 中添加 TXT 记录完成验证。DNS 验证无法自动续期,建议配合 DNS API 插件使用。

证书文件位置

/etc/letsencrypt/live/example.com/
  ├── fullchain.pem   # 证书链
  ├── privkey.pem     # 私钥
  ├── cert.pem        # 证书
  └── chain.pem       # 中间证书

常见问题

证书续期失败?

# 检查 80 端口是否被占用
ss -tlnp | grep :80
# 检查 DNS 解析是否正确
dig +short example.com

混合内容警告?

页面中若有 http:// 资源会触发混合内容警告。将内部链接改为相对路径或 https://,并在 Nginx 中添加:

add_header Content-Security-Policy "upgrade-insecure-requests";

性能影响?

TLS 握手有少量开销,但现代 CPU 与 TLS 1.3 的 0-RTT 可大幅降低延迟。更多性能优化见《性能调优指南》。

相关文章

《初次部署检查清单》、《Docker 部署指南》、《故障排查指南》。

本文核对日期:2026-08-18。Certbot 命令以官方文档为准。

NEXT STEP

看完教程,选一台合适的 DMIT

用套餐快照按预算与线路筛选,或直接前往官网查看实时库存。

推广披露:通过链接购买可能为推荐者带来佣金,不会增加你的购买价格。