使用certbot自动申请 Let’s Encrypt的通配符域名HTTPS证书
1、证书获取命令
certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --preferred-challenges dns -d "*.example.com" --server https://acme-v02.api.letsencrypt.org/directory
命令分解
- certbot:Certbot 是一个用于自动化获取和续期 SSL/TLS 证书的工具,通常与 Let's Encrypt 一起使用。
- certonly:这个子命令表示只获取证书,而不自动配置 Web 服务器(如 Nginx 或Apache)。这在您希望手动配置服务器时很有用。
- --dns-cloudflare:指定使用 Cloudflare 的 DNS 插件来处理 DNS 记录,以便进行域名验证。
- --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini:指定一个文件,包含 Cloudflare API 的凭证(API密钥和电子邮件),以便 Certbot 能够访问和修改 DNS 记录。~/.secrets/certbot/cloudflare.ini是凭证文件的路径。
- --dns-cloudflare-propagation-seconds 60:这个选项指定在 DNS 记录更新后等待 60 秒,以确保 DNS 更改传播。这个时间可以根据您的 DNS 提供商的传播速度进行调整。
- --preferred-challenges dns:指定使用 DNS 记录进行域名验证,而不是 HTTP 验证。这在使用 Cloudflare 等 DNS 提供商时非常常见。
- -d ".example.com":指定要申请证书的域名。在这里,.example.com 表示一个通配符证书,可以保护 example.com 下的所有子域名(如 www.example.com、api.example.com 等)。
- --server https://acme-v02.api.letsencrypt.org/directory:指定使用 Let's Encrypt 的 ACME v2 API 服务器。这个选项通常不是必需的,Certbot会默认使用正确的服务器,但在某些情况下,您可能希望明确指定。
总结: 整个命令的作用是通过 Cloudflare 的 DNS 插件自动申请一个通配符 SSL/TLS 证书,确保所有子域名都受到保护。它会使用 Cloudflare 的 API 凭证来修改 DNS 记录以完成域名验证,并在 DNS 记录更新后等待 60 秒以确保验证成功。
2、使用crontab创建自动执行任务
证书都是90天过期,可使用certbot certificates查看证书详情(可查看证书到期时间)
执行crontab -e,在末尾添加0 0 /80 * certbot renew --quiet,表示每80天自动执行更新证书命令。
3、手动配置nginx
证书默认存放位置:/etc/letsencrypt/live/example.com/
证书名一般为fullchain.pem、privkey.pem