关于网站配置域名通配证书

发布时间 2024-01-09 15:55:38作者: 学不会xuebuhui

摘要

域名证书申请通常用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解析需要将主域名和通配域名分开
image

  • 通配符被视为任何主机名的替身。这个例子的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解析里面
image
image
等待验证,可以在本地用nslookup查看
image

然后回到vps验证才继续
image

补充

我这里没有添加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连接。

注意

不管是申请还是续期,只要是通配符证书,只能采用 dns-01 的方式校验申请者的域名,也就是说每次续期证书我们都必须登录控制台添加对应的TXT记录才可以续期/申请成功,这样不免有些麻烦。好在certbot提供了一个hook,可以调用域名提供商的Api接口来添加TXT记录而无需人工干预,

总结

做一次总结,以后不再写相关ssl证书的文章

ssl证书申请有图形化和脚本的申请方式,目前一般用的比较多的就是acme.sh和certbot
可以实现自动续期,自动需求的功能是通过操作系统的任务实现的,定期执行脚本而已,
但是关于通配证书,需要dns解析记录,所以要实现自动更新续期,必要要dns服务提供商的api key,这个需要安装不同的模块,不同的插件
acme的优点是单域名证书申请可以指定任意端口,