- Let’s Encrypt:
一个免费的、自动化的证书颁发机构(CA),通过验证你对域名的控制权,颁发 SSL/TLS 证书。 - Certbot:
Let’s Encrypt 提供的开源客户端工具,用于自动申请、续订和安装证书。 - 关于SSl的一些知识参考这篇文章https://www.zhzxs.site/index.php/2024/11/23/1732371535/
1. Certbot 的工作原理
步骤一:验证域名控制权
当你运行 sudo certbot --apache,Certbot 会首先验证你对目标域名的控制权。这是通过以下两种方式之一实现的:
- HTTP-01 验证(默认方式):
- Certbot 会在你的网站根目录生成一个临时文件(
.well-known/acme-challenge/<token>)。 - Let’s Encrypt 的服务器会尝试访问这个文件,例如:arduinoCopy code
http://example.com/.well-known/acme-challenge/<token> - 如果访问成功,说明你确实控制了
example.com的域名。
- Certbot 会在你的网站根目录生成一个临时文件(
- DNS-01 验证(备用方式):
- Certbot 要求你在域名的 DNS 记录中添加一个特定的 TXT 记录。
- Let’s Encrypt 验证 DNS 记录后颁发证书(适用于需要为未开放 HTTP 服务的域名申请证书)。
步骤二:申请证书
验证通过后,Certbot 会向 Let’s Encrypt 请求颁发一个证书。Let’s Encrypt 会生成证书文件并将其发送回你的服务器。
步骤三:配置 Apache
Certbot 会自动修改 Apache 的配置文件以启用 HTTPS:
- 添加或修改虚拟主机配置文件:
- 设置
SSLEngine on。 - 指定证书文件路径(通常是
/etc/letsencrypt/live/<domain>/)。apacheCopy codeSSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
- 设置
- 配置 HTTP 到 HTTPS 的自动重定向规则(可选)。
步骤四:重启 Apache
完成配置后,Certbot 会自动重启或重新加载 Apache 以使新证书生效。
2. Certbot 的自动化优势
Certbot 的强大之处在于自动化:
- 申请证书: 自动与 Let’s Encrypt 交互,不需要手动上传文件或填写表单。
- 修改配置: 自动定位 Apache 配置文件并插入证书路径、重定向规则等。
- 续订证书: Let’s Encrypt 的证书有效期为 90 天,Certbot 会通过
cron或systemd timer自动定期续订。
你可以手动测试续订过程:
sudo certbot renew --dry-run
3. 如何验证证书写入成功?
- 检查配置文件: 确认 Apache 的虚拟主机配置中包含以下内容:
SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem - 验证证书: 访问网站的 HTTPS URL,例如
https://example.com,检查浏览器地址栏是否显示锁标志。 - 查看证书文件: Certbot 生成的证书文件通常保存在
/etc/letsencrypt/live/<domain>/目录,可以手动查看:sudo ls -l /etc/letsencrypt/live/<domain>/ - 使用在线工具: 使用 SSL Labs 或类似工具验证证书的正确性。
总结
Certbot 能够“自动写入证书”得益于以下关键点:
- 与 Let’s Encrypt 的交互: Certbot 自动申请和验证证书。
- 文件系统权限: Certbot 具有访问和修改 Apache 配置文件的权限。
- 自动化脚本: Certbot 自动完成配置和重启 Apache,使 HTTPS 配置生效。










