本文将介绍如何在 Ubuntu 系统中使用 acme.sh 通过
cloudflare 的 api 方式申请泛域名。
为什么使用泛域名证书?
泛域名证书和单域名证书的区别在于它们可以保护的域名范围不同。单域名证书只能保护一个具体的域名,而泛域名证书则可以保护一个域名下的所有子域名。
举例来说,假设你有一个域名
example.com,单域名证书只能保护该域名,而泛域名证书可以保护 example.com
及其所有子域名,例如 blog.example.com、shop.example.com 等。
使用泛域名证书可以大大简化证书管理工作,特别是当你有多个子域名需要保护时。使用单域名证书需要为每个子域名分别申请和维护证书,而泛域名证书可以一次申请并保护所有子域名。
因此推荐使用泛域名证书。
安装 acme.sh
安装很简单, 一个命令:
生成 SSL
创建 Token
根据官方 CloudFlare
Option 介绍,推荐使用限制权限的 Token,申请地址为:cloudflare api
token
cloudflare 右上角可以切换成中文
依次选择【创建令牌】/ 编辑区域 DNS【使用模板】,如图所示:
image-20240409222129668
其中,该 Token 需要有 DNS 的【编辑】权限。
单击后,生成的 token 是一个长度为 40 的字符串,示例如下:
1
| Y_jpG9AnfQmuX5Ss9M_qaNab6SQwme3HWXNDzRWs
|
开始生成
在 shell 中执行下列命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # 设置环境变量 export CF_Token="Y_jpG9AnfQmuX5Ss9M_qaNab6SQwme3HWXNDzRWs"
# 如果是单个 DNS 区域,需要设置区域 id, 该 id 可以进入到具体的 DNS 配置中右则查找 export CF_Zone_ID="763eac4f1bcebd8b5c95e9fc50d010b4"
# 如果是多个 DNS 区域,需要设置账户 id 方便 acme.sh 识别,区域 ID 可不设置 # 账户 id 可以在登陆后,跳转到主页 https://dash.cloudflare.com/,最后一级即为 id # 例如:https://dash.cloudflare.com/763eac4f1bcebd8b5c95e9fc50d010b4 export CF_Account_ID="763eac4f1bcebd8b5c95e9fc50d010b4"
# 进入到 .acme.sh 目录 cd ~/.acme.sh
# 生成证书 ./acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
# 安装证书 acme.sh --install-cert -d example.com \ --key-file /path/to/keyfile/in/nginx/key.pem \ --fullchain-file /path/to/fullchain/nginx/cert.pem \ --reloadcmd "service nginx reload"
|
参考
说明 ·
acmesh-official/acme.sh Wiki (github.com)
dnsapi ·
acmesh-official/acme.sh Wiki (github.com)