关于网站配置域名通配证书
摘要
域名证书申请通常用certbot和acme.sh https://zhuanlan.zhihu.com/p/347064501 两种
acme.sh 安装
curl https://get.acme.sh | sh
或者
wget -O - https://get.acme.sh | sh
本文介绍关于certbot
dns解析需要将主域名和通配域名分开
- 通配符被视为任何主机名的替身。这个例子的DNS记录将匹配 one.example.com, 和 two.example.com.它不会匹配裸的example.com ,也不会匹配 one.two.example.com因为* 通配符只能扩展到一个主机名,不能扩展到多级名称。
首先是安装 certbot工具https://www.digitalocean.com/community/tutorials/how-to-use-certbot-standalone-mode-to-retrieve-let-s-encrypt-ssl-certificates-on-ubuntu-1804, python-certbot-nginx为自动配置nginx插件。插件列表https://eff-certbot.readthedocs.io/en/latest/using.html#dns-plugins
示例,其实本文没用用到插件的功能,直接用certbot申请的通配证书,然后dns txt解析记录方式挑战认证
apt install certbot python-certbot-nginx
用certbot plugins可以查看所有安装的插件
执行以下命令:
ssl通配证书可以将子域名和主域名全部包含在一个证书下,因为我这里之前申请过一个主域名的单域名证书,所以通配域名就不带主域名了
我只执行了泛域名通配
# 泛域名:certbot certonly -d *.test.com --manual --preferred-challenges dns
# 主域名:certbot certonly -d test.com --manual --preferred-challenges dns
将txt记录填到域名服务商的dns解析里面
等待验证,可以在本地用nslookup查看
然后回到vps验证才继续
补充
我这里没有添加dns的api-key,只能手动续期,自动续期在研究
.acme.sh/acme.sh --renew -d jkdev.cn -d *.jkdev.cn
这个命令看起来是使用acme.sh工具来更新SSL证书的命令。该命令使用-d参数指定了要更新的域名列表,其中包括jkdev.cn和*.jkdev.cn。
这个命令的作用是更新jkdev.cn域名以及其所有的子域名的SSL证书。通配符()在这里表示匹配所有的子域名,因此.jkdev.cn将包括所有以.jkdev.cn结尾的子域名。
acme.sh是一个用于自动化SSL证书申请和更新的工具,通过执行这个命令,可以方便地更新SSL证书,确保网站的安全连接。
这个命令会生成一个证书,其中包括了两个域名:jkdev.cn 和 *.jkdev.cn。这意味着这个证书将同时适用于主域名 jkdev.cn 和其所有的子域名,比如 www.jkdev.cn、blog.jkdev.cn 等等。这样做可以确保主域名和其所有的子域名都可以使用同一个证书来建立安全的SSL连接。
自动续约
要设置自动续订,您可以编辑crontab文件,添加一个定时任务来定期执行sudo certbot renew命令。例如,您可以使用以下命令编辑crontab文件:
sudo crontab -e
然后在文件中添加一行类似如下的内容:
0 0 * * * /usr/bin/certbot renew
关于定时crontab的写法
这将在每天的午夜零点执行证书续订操作。您可以根据需要调整定时任务的执行时间。
这行命令是一个cron表达式,用于在Linux系统中设置定时任务。cron表达式由五个字段组成,分别表示分钟、小时、日期、月份和星期几。在这个例子中:
- 第一个字段(0)表示分钟。在这里是0,表示每小时的第0分钟。
- 第二个字段(0)表示小时。在这里是0,表示午夜(即0点)。
- 第三个字段()表示日期。在这里是,表示每天都执行。
- 第四个字段()表示月份。在这里是,表示每个月都执行。
- 第五个字段()表示星期几。在这里是,表示每个星期都执行。
因此,这个cron表达式的含义是:每天的午夜零点(即0点)执行/usr/bin/certbot renew
命令。
这样设置之后,系统会在每天的午夜零点尝试自动续订SSL证书。如果证书快要过期,certbot renew
命令将会执行续订操作。
通过设置自动续订,您可以确保您的SSL证书在到期前会自动更新,从而避免了证书过期导致的服务中断。
注意
不管是申请还是续期,只要是通配符证书,只能采用 dns-01 的方式校验申请者的域名,也就是说每次续期证书我们都必须登录控制台添加对应的TXT记录才可以续期/申请成功,这样不免有些麻烦。好在certbot提供了一个hook,可以调用域名提供商的Api接口来添加TXT记录而无需人工干预,
总结
做一次总结,以后不再写相关ssl证书的文章
ssl证书申请有图形化和脚本的申请方式,目前一般用的比较多的就是acme.sh和certbot
可以实现自动续期,自动需求的功能是通过操作系统的任务实现的,定期执行脚本而已,
但是关于通配证书,需要dns解析记录,所以要实现自动更新续期,必要要dns服务提供商的api key,这个需要安装不同的模块,不同的插件
acme的优点是单域名证书申请可以指定任意端口,