certbot申请泛域名证书并自动续签保姆级教程

发布时间 2024-01-08 23:39:07作者: 今天大晴天

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证书来源于

LetsEncrypt

4、certbot官方:

https://certbot.eff.org/

二、主要步骤:

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