运维 作者:iTrustSSL 2025-05-07 23:05:31 阅读:12
Certbot 是一个开源工具,用于自动化 Let’s Encrypt 证书的获取和续期。Let’s Encrypt 是一个提供免费 SSL/TLS 证书的认证机构(CA),其目标是使整个 Web 使用加密连接。Certbot 是 Electronic Frontier Foundation (EFF) 的项目,设计用于简化 SSL/TLS 证书的管理。
自动获取证书:Certbot 可以自动与 Let’s Encrypt 服务器通信,验证你的域名所有权,并获取证书。
自动安装证书:Certbot 可以自动配置大多数 Web 服务器(如 Nginx 和 Apache)以使用获取到的证书。
自动续期:Let’s Encrypt 证书的有效期为 90 天,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 可以定期检查证书的有效期并自动续期,以确保服务的持续性和安全性。
• 在不同的系统上有不同的安装方法,例如使用 snap、apt、yum 等。
我在用 yum 安装后使用 certbot 获取证书报错了,使用了 snap 安装,这里说一下 snap:
Snap 是一种由 Canonical 开发的包管理工具,用于在 Linux 系统上安装、管理和更新应用程序。它提供了一种与系统依赖隔离的方式来打包应用程序,从而使软件的安装和升级变得更加简单和可靠。
如果你的系统还没有安装 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 获取证书了
• 使用 certbot certonly 命令获取证书。
• 示例:
certbot certonly --standalone -d example.com #-d参数后面跟的是域名
执行命令后会让填写&同意一些条款信息:
填写邮箱,用来通知证书情况
同意条款
同意是否给邮箱发送"广告"
这里会调用服务器 80 端口验证域名,尽量保持80 端口不被占用
• 配置你的 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; } }
• Certbot 默认会安装一个 cron job 或 systemd timer 来自动续期证书。
• 可以手动测试续期:
certbot renew --dry-run
同样会调用本机 80 端口验证,如果 80 端口被占用会报错
• 获取证书:
certbot certonly --standalone -d example.com
• 续期证书:
certbot renew #手动指定域名更新 certbot certonly --force-renewal -d www.xxx.com
• 检查配置:
certbot certificates
• 删除证书:
certbot delete --cert-name example.com
Certbot 是一个强大的工具,简化了获取和管理 SSL/TLS 证书的过程。它通过自动化验证和续期过程,确保你的网站始终使用最新的安全证书,提供安全的 HTTPS 连接。如果你运行一个网站或服务,使用 Certbot 和 Let’s Encrypt 来管理你的 SSL/TLS 证书是一个值得推荐的选择。
Certbot由电子前哨基金会(EFF)开发和维护,主要用于自动化获取、安装和续期Let's Encrypt证书,也可以作为使用ACME协议的其他证书颁发机构的客户端。开源好用,可自动修改 n
Certbot在执行命令时,提示权限不足,无法读取或写入相关文件和目录。解决方案1. 使用管理员权限运行:在运行Certbot命令时,使用 sudo 获取管理员权限。例如:1 sudo certbot
SSL证书到期后,网站无法正常访问,或出现证书过期警告,影响用户体验和网站安全。解决方案1. 设置证书续期提醒:使用系统自带的提醒工具或第三方监控工具,设置SSL证书有效期提醒。例如,在Linux系统