配置 Let's Encrypt SSL证书
针对 Apache2 服务器,使用 Let's Encrypt 证书的官方推荐工具是 Certbot。它能自动完成证书申请、配置 Apache 以及设置自动续期,整个过程非常简便。
准备工作
开始之前,请确保:
- 你有一个已经解析到这台服务器公网 IP 的域名。
- 服务器的 80 端口已开放,以便 Let's Encrypt 验证域名所有权。
- 你的 Apache 已经为这个域名配置好了一个基础的 HTTP 虚拟主机。
操作步骤
1. 安装 Certbot 及 Apache 插件
在终端中执行以下命令来安装 Certbot 和它的 Apache 插件:
sudo apt update
sudo apt install certbot python3-certbot-apache如果你的系统是 Ubuntu 18.04 等较旧版本,包名可能是 python-certbot-apache。2. 申请并自动配置证书
运行以下命令,Certbot 会自动读取你的 Apache 配置,为指定域名申请证书,并帮你完成所有 SSL 相关的配置(如创建 443 端口的虚拟主机、设置 HTTP 跳转到 HTTPS)。
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com- 将
yourdomain.com和www.yourdomain.com替换为你的实际域名。第一个域名将作为证书的主要名称。 - 执行后,根据提示输入你的邮箱(用于接收证书过期提醒),并同意服务条款。
看到 Congratulations! You have successfully enabled HTTPS 的提示,就说明证书已经申请并部署成功了。
3. 验证 HTTPS 访问
配置完成后,Certbot 会自动重载 Apache 使配置生效。你可以在浏览器中访问 https://yourdomain.com,确认地址栏显示了安全锁图标,并且 HTTP 请求会自动跳转到 HTTPS。
证书文件位置与自动续期
- 证书文件:申请成功的证书文件默认保存在
/etc/letsencrypt/live/yourdomain.com/目录下。 自动续期:Let's Encrypt 的证书有效期为 90 天。Certbot 在安装时会自动创建一个
systemd定时器(或cron任务),每天检查并自动续期即将过期的证书,你无需手动操作。
你可以运行以下命令来模拟续期过程,以确认自动续期功能是否正常:sudo certbot renew --dry-run
常见问题与进阶
- 插件未安装错误:如果运行
certbot --apache时提示The requested apache plugin does not appear to be installed,通常是因为缺少了python3-certbot-apache包,请参照第 1 步重新安装。 申请失败排查:如果申请失败,可以检查:
- 80 端口是否被防火墙拦截。
- 域名是否正确解析到了服务器 IP。
- Certbot 的日志文件位于
/var/log/letsencrypt/letsencrypt.log,可以从中查看详细错误信息。
- 为多个独立站点申请证书:如果你的服务器上有多个不同域名的网站,需要为它们分别申请证书。不要在一个
certbot命令中一次性处理所有域名,这可能会导致配置错乱。应该为每个站点单独运行一次certbot --apache命令。
如果后续需要更精细地调整 SSL 参数,可以编辑 Certbot 为你生成的 -le-ssl.conf 文件,但通常情况下,自动生成的配置已经足够安全。