概述
Certbot 是一个开源工具,用于自动化 Let’s Encrypt 证书的获取和续期。Let’s Encrypt 是一个提供免费 SSL/TLS 证书的认证机构(CA),其目标是使整个 Web 使用加密连接。Certbot 是 Electronic Frontier Foundation (EFF) 的项目,设计用于简化 SSL/TLS 证书的管理。
Certbot 的主要功能
-
自动获取证书:Certbot 可以自动与 Let’s Encrypt 服务器通信,验证你的域名所有权,并获取证书。
-
自动安装证书:Certbot 可以自动配置大多数 Web 服务器(如 Nginx 和 Apache)以使用获取到的证书。
-
自动续期:Let’s Encrypt 证书的有效期为 90 天,Certbot 可以自动续期,确保证书不会过期。
Certbot 的工作原理
-
域名验证:Certbot 通过挑战/响应机制验证你对域名的控制权。常见的验证方法包括 HTTP-01 和 DNS-01。
• HTTP-01 验证:Certbot 会在你的 Web 服务器上创建一个特定的文件,Let’s Encrypt 服务器会尝试访问这个文件来验证域名所有权。
• DNS-01 验证:Certbot 会在你的域名的 DNS 记录中添加一个特定的 TXT 记录,Let’s Encrypt 服务器会检查这个 DNS 记录来验证域名所有权。
-
证书获取:一旦域名验证成功,Let’s Encrypt 服务器会签发一个 SSL/TLS 证书,Certbot 会将其下载到本地。
-
证书安装:Certbot 可以配置你的 Web 服务器使用新获取的证书。
-
证书续期:Certbot 可以定期检查证书的有效期并自动续期,以确保服务的持续性和安全性。
使用 Certbot 的基本步骤
1. 安装 Certbot:
• 在不同的系统上有不同的安装方法,例如使用 snap
、apt
、yum
等。
我在用 yum 安装后使用 certbot 获取证书报错了,使用了 snap
安装,这里说一下 snap
:
Snap 简介
Snap 是一种由 Canonical 开发的包管理工具,用于在 Linux 系统上安装、管理和更新应用程序。它提供了一种与系统依赖隔离的方式来打包应用程序,从而使软件的安装和升级变得更加简单和可靠。
安装 Snap
如果你的系统还没有安装 snapd
(Snap 的后台服务),可以通过以下步骤进行安装:
在 CentOS 7 上安装 Snapd 的步骤如下:
sudo yum install epel-release
sudo yum install snapd
安装完成后,启用并启动 snapd
服务:
sudo systemctl enable --now snapd.socket
然后,创建符号链接,使 snap 命令可以在系统路径中被识别:
sudo ln -s /var/lib/snapd/snap /snap
–classic 选项用于允许 Certbot 使用传统的 Unix 文件系统访问权限,这对于 Certbot 的功能是必要的。
接下来就可以使用 certbot 获取证书了
2. 获取证书:
• 使用 certbot certonly
命令获取证书。
• 示例:
certbot certonly --standalone -d example.com #-d参数后面跟的是域名
执行命令后会让填写&同意一些条款信息:
-
填写邮箱,用来通知证书情况
-
同意条款
-
同意是否给邮箱发送"广告"
这里会调用服务器 80 端口验证域名,尽量保持80 端口不被占用
3. 配置 Web 服务器:
• 配置你的 Web 服务器(如 Nginx 或 Apache)使用 Certbot 获取的证书。
• 示例的 Nginx 配置:
server {
listen 80;
server_name example.com; #域名地址
# 重定向所有 HTTP 请求到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
# SSL 证书和密钥文件的路径
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# SSL 参数
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
# 其他配置
location / {
# 你的应用配置
proxy_pass http://example.com; #域名地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4. 自动续期:
• Certbot 默认会安装一个 cron job
或 systemd timer
来自动续期证书。
• 可以手动测试续期:
certbot renew --dry-run
同样会调用本机 80 端口验证,如果 80 端口被占用会报错
常见 Certbot 命令
• 获取证书:
certbot certonly --standalone -d example.com
• 续期证书:
certbot renew
• 检查配置:
certbot certificates
• 删除证书:
certbot delete --cert-name example.com
总结
Certbot 是一个强大的工具,简化了获取和管理 SSL/TLS
证书的过程。它通过自动化验证和续期过程,确保你的网站始终使用最新的安全证书,提供安全的 HTTPS 连接。如果你运行一个网站或服务,使用 Certbot 和 Let’s Encrypt 来管理你的 SSL/TLS
证书是一个值得推荐的选择。