Certbot自动化 Let’s Encrypt 证书的获取和续期。

运维 作者: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 的主要功能

  1. 自动获取证书:Certbot 可以自动与 Let’s Encrypt 服务器通信,验证你的域名所有权,并获取证书。

  2. 自动安装证书:Certbot 可以自动配置大多数 Web 服务器(如 Nginx 和 Apache)以使用获取到的证书。

  3. 自动续期:Let’s Encrypt 证书的有效期为 90 天,Certbot 可以自动续期,确保证书不会过期。

Certbot 的工作原理

  1. 域名验证:Certbot 通过挑战/响应机制验证你对域名的控制权。常见的验证方法包括 HTTP-01 和 DNS-01。

    • HTTP-01 验证:Certbot 会在你的 Web 服务器上创建一个特定的文件,Let’s Encrypt 服务器会尝试访问这个文件来验证域名所有权。

    • DNS-01 验证:Certbot 会在你的域名的 DNS 记录中添加一个特定的 TXT 记录,Let’s Encrypt 服务器会检查这个 DNS 记录来验证域名所有权。

  2. 证书获取:一旦域名验证成功,Let’s Encrypt 服务器会签发一个 SSL/TLS 证书,Certbot 会将其下载到本地。

  3. 证书安装:Certbot 可以配置你的 Web 服务器使用新获取的证书。

  4. 证书续期: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参数后面跟的是域名

执行命令后会让填写&同意一些条款信息:

  1. 填写邮箱,用来通知证书情况

  2. 同意条款

  3. 同意是否给邮箱发送"广告"

这里会调用服务器 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 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开源数字证书生成平台

    Certbot由电子前哨基金会(EFF)开发和维护,主要用于自动化获取、安装和续期Let's Encrypt证书,也可以作为使用ACME协议的其他证书颁发机构的客户端。开源好用,可自动修改 n

  • Certbot提示权限不足,无法读取或写入相关文件和目录

    Certbot在执行命令时,提示权限不足,无法读取或写入相关文件和目录。解决方案1. 使用管理员权限运行:在运行Certbot命令时,使用 sudo 获取管理员权限。例如:1 sudo certbot

  • Certbot如何设置证书续期

    SSL证书到期后,网站无法正常访问,或出现证书过期警告,影响用户体验和网站安全。解决方案1. 设置证书续期提醒:使用系统自带的提醒工具或第三方监控工具,设置SSL证书有效期提醒。例如,在Linux系统

赞助链接

Copyright © 2024 5xcloud.com All rights reserved.

蜀ICP备20006130号