certbot申请泛域名证书并自动续签(使用docker进行部署)
一、涉及到的资源及文档
1、云解析 - OpenAPI 概览:https://next.api.aliyun.com/document/Alidns/2015-01-09/overview
2、certbot-auth-alidns:
https://github.com/zphiliam/certbot-auth-alidns
3**、**证书来源于
4、certbot官方:
二、主要步骤:
1、用git拉取certbo
安装certbot
从gitbhub拉取组件:
git clone https://github.com/tengattack/certbot-dns-aliyun.git
2、获取阿里云AccessKey
包括id和secret,成对儿使用,登录阿里云控制台,可以使用主账号的AccessKey,推荐利用RAM创建子账号的AccessKey,更安全。
- 所以首先创建ram账号
- 添加dns访问权限,添加访问accesskey权限
- 获取刚创建ram用户的id和secret
3、修改配置文件
- 修改配置文件scripts/credentails/aliyun.ini
(1)、dns_aliyun_access_key 是访问阿里云 DNS 服务所需的 Access Key ID,它是一个唯一的标识符,用于验证您对阿里云资源的访问权限。
(2、)dns_aliyun_access_key_secret 是与 Access Key ID 相对应的密钥秘钥,用于对访问进行身份验证。这是一个保密信息,不应公开或共享。
- 修改配置文件scripts/letsencrypt/cli.ini
修改域名和邮箱:
- 个别参数讲解
(1)、installer = nginx: 这个参数指定了使用的安装器,这里是 Nginx。这意味着 Certbot 将尝试自动配置 Nginx 服务器以使用新的证书。
(2)、agree-tos = true: 这个参数表示同意 Let's Encrypt 的服务条款。
(3)、no-eff-email = true: 这个参数表示不向 Let's Encrypt 提供效果统计数据的电子邮件地址。
(4)、authenticator = dns-aliyun: 这个参数指定了认证器,即用于验证域名所有权的方法。这里使用的是阿里云 DNS 认证
(5)、preferred-challenges = dns: 这个参数指定了首选的验证方式,这里是 DNS 验证。在 DNS 验证中,Certbot 通过添加特定的 DNS 记录来验证域名。
(6)、dns-aliyun-credentials = '/root/.secrets/aliyun.ini': 这个参数指定了阿里云 DNS 认证所需的凭据文件的路径。该凭据文件可能包含访问阿里云 API 的密钥和其他配置信息。
(7)、dns-aliyun-propagation-seconds = 120: 这个参数指定了等待 DNS 记录传播的时间(以秒为单位)。在修改 DNS 记录后,需要一些时间让修改生效,这个参数设置了等待的时间。
(8)、email = example@demo.com: 这个参数是必需的,用于提供有效的电子邮件地址,以便通知证书相关的信息。
(9)、domains = '*.demo.com,demo.c: 这个参数是必需的,用于指定要申请证书的域名列表。在这个例子中,包括 *.demo.com 和 demo.com
****这里可以是主域名,也可以是泛域名
- 泛域名(Wildcard Domain)是指一个通配符(通常是 * 号)被用于代表任意子域名的域名。这意味着泛域名可以匹配多个不同的子域名。
- 主域名(Primary Domain)是指一个完整的域名,它是由顶级域名(如 .com、.org)和次级域名(如 example)组成的。
4、编写nginx的配置文件
/certbot-dns-aliyun/scripts/letsencrypt/live 这个目录下 需要注意:此文件为软连接文件在使用
源文件在:/certbot-dns-aliyun/scripts/letsencrypt/letsencrypt/archive/
5、执行脚本
./build.sh
****构建一个包含NGINX和阿里云DNS插件的镜像*****
./setup.sh
*****这是一个Shell脚本,主要作用是安装Let's Encrypt证书自动更新的定时任务。****
./run.sh
****用于执行Certbot与阿里云DNS插件的容器化操作。*****
6、启动nginx的docker容器
- docker-compos up -d