本文将试图教会你使用certbot acme client自己给自己签发免费的ssl证书

关于Let’s Encrypt和certbot

Let’s Encrypt 是免费、开放和自动化的证书颁发机构,是由非盈利组织互联网安全研究小组(ISRG)运营,累计为 3.63 亿[1]网站提供 TLS 证书的非营利证书颁发机构

Let’s Encrypt 官方建议大多数具有命令行访问权限的人使用 Certbot ACME 客户端。 它可以在不下线您的服务器的前提下自动执行证书颁发和安装。

certbot使用

  1. 可以通过包管理器安装certbot

    1
    2
    3
    sudo apt install certbot python3-certbot-nginx
    sudo yum install certbot python3-certbot-nginx
    brew install certbot # 如果你还在用mac os的服务器的话
  2. 使用certbot命令进行证书签发

上面安装的是使用nginx的certbot,所以需要在安装了nginx的情况下使用下面的命令

1
sudo certbot run -d www.example.com

执行该命令后,certbot 会修改你的nginx配置文件进行http验证,验证通过后会将证书保存到/etc/letsencrypt/live/<your_domain>文件夹下,并且certbot帮你在nginx中填入监听443 ssl端口所需的配置,并询问你是否需要将80端口的请求全部重定向到443端口

/etc/nginx/nginx.conf(或是位于其他地方的nginx默认主配置文件)中写入的申请签发证书的域名的80端口监听配置==可能==会被certbot在重定向请求后迁移到/etc/nginx/sites-available/default文件中,如果你在修改主配置文件时发现了有监听冲突,不妨去主配置文件include语句中引入的配置文件检查

你也可以使用

1
sudo certbot certonly -d www.example.com

来只申请并保存证书而不修改nginx的配置

  1. 验证自动续签证书
    通常certbot在为你签发证书后,通常都会自动配置一个系统定时任务(cron job)来定期检查和续签证书,可以用命令来检查

    1
    sudo systemctl list-timers | grep certbot

    还可以用下面的命令来测试自动续签

    1
    sudo certbot renew --dry-run

    下面是certbot关于--dry-run参数的help内容

    --dry-run: Test “renew” or “certonly” without saving any certificates
    to disk

    如果执行该命令时没有错误提示,说明自动续签配置正确。


  1. 2024/07/01 我在中文官网看到的数据 ↩︎