Acme + Cloudflare, 申请Google免费泛域名证书

本文最后更新于:2024年7月15日 下午

Acme + Cloudflare, 申请Google免费泛域名证书

获取Google验证信息

进入链接,点击左上角项目名称,获得project id

1
https://console.cloud.google.com/apis/dashboard
image-20240714153430529

将得到的project id填入下方链接并访问,启用Public Certificate Authority API服务

1
https://console.cloud.google.com/apis/library/publicca.googleapis.com?project=<Project ID>
image-20240714153819514

点击下图图标,进入Cloud Shell

shell

在终端中输入以下代码

1
2
gcloud config set project <Project ID> # 注意替换project id
gcloud beta publicca external-account-keys create

key

获取生成的b64MacKeykeyId

配置acme

使用下方命令安装acme,注意替换email

1
2
curl https://get.acme.sh | sh -s email=<EMAIL> 
source ~/.bashrc

设置默认注册服务器为Google

1
acme.sh --set-default-ca --server google

添加账户,替换为申请到的key和id,若显示失效需要重新申请

1
2
3
acme.sh --register-account  --server google \
--eab-kid <keyId> \
--eab-hmac-key <b64MacKey>

配置dns验证

打开下方网址

1
https://dash.cloudflare.com/profile/api-tokens

API Tokens -> Create Token -> Edit Zone DNS(点击 use template)

在此页面也可获取Global Token,更省事,但不安全,不建议

token

如果需要为多个域名申请证书,可以点击Zone Resources下的Add more,添加更多域名。

完成后点击Continue to summary

zone dns

获取API token,此项称为CF_Token

API token

进入需要申请证书的域名的管理页面,下滑,右下角获取CF_Zone_IDCF_Account_ID

zone and account

进入终端,设置环境变量

1
2
3
4
5
6
7
8
# 如果获取单域token,使用此形式
export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxxxxxxxxxx"

# 如果获取的是全局token,使用此形式
export CF_Key='xxxxxxxxxxxxxxxxxxxxxxxx'
export CF_Email="你的cloudflare邮箱"

申请证书

1
2
3
4
acme.sh --issue --dns dns_cf -d example.com #单域名
acme.sh --issue --dns dns_cf -d *.example.com #泛域名
acme.sh --issue --dns dns_cf -d sub1.example.com -d sub2.example.com #多域名
acme.sh --issue --dns dns_cf -d example.com --ecc #ECC 证书(目前默认就是ecc证书)

看到回显Cert success即为申请成功,可以在~/.acme.sh/_.example.com/下获取证书

证书有效期三个月,acme会自动检测并续期

More

上文中阐述的环境变量设置方法只在当前终端中有效,如果需要永久环境变量,请使用以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改编辑权限
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# 将需要的环境变量添加在文件末尾
export CF_Token = "xxxxx"
...
...
...

# 刷新终端
source /etc/bashrc

永久有效,且对所有用户生效。

Reference


Acme + Cloudflare, 申请Google免费泛域名证书
https://www.0co.dev/google-free-cert/
作者
Konrad Gerrens
发布于
2024年7月14日
许可协议