certbot申请泛域名证书

本文重点介绍怎么使用certbot申请免费的泛域名证书,并实现自动续期,从而达到永久免费。

Posted by guanyang on 2023-03-11
Words 716 and Reading Time 3 Minutes
Viewed Times

前言

  • certbot-auto申请证书时发现如下提示:certbot-auto被弃用了
    1
    2
    3
    4
    Skipping bootstrap because certbot-auto is deprecated on this system.
    Your system is not supported by certbot-auto anymore.
    Certbot cannot be installed.
    Please visit https://certbot.eff.org/ to check for other alternatives.
  • 根据github的issue看到作者的回应

    github的issue: https://github.com/certbot/certbot/issues/8535

github issue

安装snap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 将EPEL添加到CentOS 7
yum install epel-release

#安装snapd
yum install snapd

#安装后,需要启用用于管理主快照通信套接字
systemctl enable --now snapd.socket

# 启用快照支持
ln -s /var/lib/snapd/snap /snap

# 检查更新snap版本
snap install core
snap refresh core

卸载旧的certbot

1
2
# 以前没有装过的不用这一步
yum remove certbot

安装certbot

1
2
3
4
5
6
# 安装certbot
snap install --classic certbot
# --classic: 官方对classic是如上面所描述的那样定义的,它是与strict相对的。也就是说,在默认情况下,它使用的是strict模式,对安全权限做了极高的要求与限制,然后classic就和传统的安装包一样对安全权限没有限制,其实这里的classic就约等于确认已知不安全的风险的含义

# 添加软链,全局使用
ln -s /snap/bin/certbot /usr/bin/certbot

申请泛域名证书和自动续期

申请前准备

当前工具支持阿里云 DNS、腾讯云 DNS、华为云 NDS、GoDaddy(certbot 官方没有对应的插件)。

1
2
3
4
5
git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au

cd certbot-letencrypt-wildcardcertificates-alydns-au

chmod 0777 au.sh

申请证书

详细的参数说明到github查看: https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 例子(这些参数根据自己的情况填写)
certbot certonly
-d example.com
-d *.example.com
--manual
--preferred-challenges dns
--dry-run
--manual-auth-hook "/etc/certbot-letencrypt-wildcardcertificates-alydns-au/au.sh python aly add" # 申请之前添加TXT记录
--manual-cleanup-hook "/etc/certbot-letencrypt-wildcardcertificates-alydns-au/au.sh python aly clean" # 申请之后删除TXT记录
--pre-hook "systemctl stop nginx.service" # 停止nginx
--post-hook "systemctl start nginx.service" # 启动nginx

# 配置说明
-d: 域名
--manual: 手动模式申请
--preferred-challenges: 验证方式
--dry-run: 测试模式(正式使用时去掉这个参数)
--manual-auth-hook: 以交互方式或使用shell脚本获取证书钩子
--manual-cleanup-hook: 以交互方式或使用shell脚本获取证书钩子
--pre-hook: 前置钩子;可用来执行一些命令
--post-hook: 后置钩子;可用来执行一些命令

自动续期

上面已经成功申请到证书了, 但是只有三个月的有效期,需要定时续期,编辑/etc/crontab,添加定时任务

1
2
#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !

...

...

00:00
00:00