HTTPS与SSL证书配置完整指南:Let’s Encrypt免费证书申请与自动续期

如果你的网站还在用 HTTP,Chrome 浏览器会在地址栏显示"不安全"警告,用户看到这个标志后往往直接关闭页面。更重要的是,Google 从 2014 年起就将 HTTPS 作为搜索排名的加分因素,没有 HTTPS 的网站在 SEO 上处于天然劣势。本文手把手带你完成 SSL 证书申请和 HTTPS 配置。


一、SSL/TLS 和 HTTPS 是什么关系?

很多人混用这几个词,其实:

  • SSL(Secure Sockets Layer)/ TLS(Transport Layer Security):加密协议,TLS 是 SSL 的更新版本,但习惯上仍称 SSL 证书
  • HTTPS(HTTP Secure):在 HTTP 协议上加了 SSL/TLS 加密层,所有传输数据被加密
  • SSL 证书:由受信任的证书颁发机构(CA)签发,证明"这个域名确实属于声称的服务器",是实现 HTTPS 的必要凭证

简单说:SSL 证书 + Nginx/Apache 配置 = HTTPS 访问。


二、SSL 证书类型选择

证书类型验证级别价格适合场景
DV(域名验证)仅验证域名控制权免费(Let's Encrypt)个人站、博客、一般商业网站
OV(组织验证)验证组织真实性数百~数千元/年企业官网、需要展示公司信息
EV(扩展验证)最严格的企业审核数千~万元/年银行、金融机构(绿色地址栏)
通配符证书覆盖所有子域名(*.domain.com)免费(Let's Encrypt 支持)有多个子域名的网站

对于绝大多数出海建站场景,Let's Encrypt 免费 DV 证书完全足够,浏览器显示效果与付费证书完全相同(都是绿色锁图标),且完全免费。


三、前置条件检查

在申请证书前,确认:

  1. 域名已解析到服务器 IP,并且 DNS 已生效(用 ping yourdomain.com 确认)
  2. 服务器 80 和 443 端口已开放(sudo ufw allow 80 && sudo ufw allow 443)
  3. Nginx 或 Apache 已安装并运行

四、方法一:Certbot + Nginx(推荐,最自动化)

Step 1:安装 Certbot

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Step 2:申请证书并自动配置 Nginx

# 单域名
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 申请通配符证书(需要 DNS 验证方式)
sudo certbot certonly --manual --preferred-challenges dns -d "*.yourdomain.com" -d yourdomain.com

Certbot 会提示你:

  1. 输入联系邮箱(用于证书到期提醒)
  2. 同意服务条款
  3. 是否将 HTTP 自动重定向到 HTTPS(选 Yes)

完成后,Certbot 会自动修改 Nginx 配置,添加 SSL 配置和 HTTP 到 HTTPS 的重定向规则。

Step 3:验证 HTTPS 是否生效

# 检查 Nginx 配置语法
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

# 用 curl 验证 HTTPS
curl -I https://yourdomain.com

看到 HTTP/2 200 或 HTTP/1.1 200 表示 HTTPS 配置成功。

Step 4:测试自动续期

# Let's Encrypt 证书有效期 90 天,Certbot 会自动续期
# 模拟续期测试(不实际续期)
sudo certbot renew --dry-run

# 查看 Certbot 定时任务
sudo systemctl status certbot.timer

Certbot 安装时会自动创建 systemd 定时器,每天检查两次证书是否需要续期(距到期 30 天内自动续期),无需手动干预。


五、方法二:Certbot + Apache

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

与 Nginx 流程基本相同,Certbot 会自动处理 Apache 的配置修改。


六、方法三:acme.sh(适合高级用户)

acme.sh 是一个纯 Shell 脚本的 ACME 客户端,比 Certbot 更轻量,支持更多 DNS 提供商的自动验证:

# 安装 acme.sh
curl https://get.acme.sh | sh -s email=your@email.com

# 申请证书(使用 Nginx 验证方式)
~/.acme.sh/acme.sh --issue -d yourdomain.com --nginx

# 安装证书到 Nginx
~/.acme.sh/acme.sh --install-cert -d yourdomain.com \
  --key-file /etc/nginx/ssl/yourdomain.com.key \
  --fullchain-file /etc/nginx/ssl/yourdomain.com.cer \
  --reloadcmd "sudo systemctl reload nginx"

七、配置好 HTTPS 后的 Nginx 配置示例

# HTTP 强制跳转 HTTPS
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

# HTTPS 主配置
server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    # SSL 证书路径(Certbot 自动填写)
    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;    # 禁用老旧的 TLS 1.0/1.1
    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;

    # HSTS(告诉浏览器始终用 HTTPS 访问)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # 其他安全头
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

八、HTTPS 配置后的常见问题

问题一:Mixed Content(混合内容)警告

网站切换 HTTPS 后,如果页面中仍有 http:// 开头的图片、CSS、JS 链接,浏览器会报混合内容警告,部分资源会被拦截。

解决方法:

  • WordPress 用户:安装 Really Simple SSL 插件,一键替换数据库中的 http 链接为 https
  • 手动修复:在 MySQL 中执行批量替换
    UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');

问题二:证书续期失败

常见原因:

  • 80 端口被防火墙封闭(Certbot 的 HTTP-01 验证需要 80 端口)
  • 域名 DNS 发生变更,不再指向该服务器
  • 服务器更换后 Certbot 配置未迁移
# 手动触发续期(排查问题)
sudo certbot renew --force-renewal

问题三:SSL Labs 评分不是 A+

使用 Qualys SSL Labs(https://www.ssllabs.com/ssltest/)测试你的 HTTPS 配置。按照本文的 Nginx 配置,通常可以达到 A 或 A+ 评级。最常见的扣分点是没有启用 HSTS 或支持了过时的 TLS 版本。


总结

配置 HTTPS 是每个网站上线前的必做事项,不是可选项。使用 Let's Encrypt + Certbot,整个流程只需 10~15 分钟,完全免费,且自动续期无需手动管理。

  • 🔒 用户信任:有绿色锁图标,用户安心填写信息和支付
  • 📈 SEO 加分:Google 将 HTTPS 作为排名因素之一
  • 💳 支付合规:Stripe、PayPal 等支付接口要求 HTTPS

如果你正在使用后浪云服务器,按照本文步骤即可在服务器上完成 SSL 证书配置,有任何问题欢迎通过工单联系技术支持。

THE END