使用 ACME.SH 申请 Google CA SSL 证书

2023-01-20 17:14:28 +08:00
 jonathon523

本文原创于Cestlavie Blog|原文链接


前言

最近谷歌开放了自家的 GTS CA(Google Trust Services),谷歌作为全球大厂那不得好好嫖一下!目前该服务进入了 Public Review 阶段,不再需要申请内测资格,而且支持 acme.sh 快速申请,那不就是嫖他的好日子来了吗!

证书简介

GTS SSL 证书的特点是

申请步骤

获取注册密钥

打开shell.cloud.google.com,输入以下代码

$ gcloud beta publicca external-account-keys create #创建凭据

回显为

$ gcloud beta publicca external-account-keys create
API [publicca.googleapis.com] not enabled on project [<projectid>]. Would you like to enable and retry (this will take a few minutes)? (y/N)?  y #允许创建 publica API
Enabling service [publicca.googleapis.com] on project [<projectid>]...
Operation "operations/acat.p2-<projectid>-<uuid>" finished successfully.
Created an external account key
[b64MacKey: <hmac_key>
keyId: <keyid>]

保存好输出的<hmac_key><keyid>,接下来要用

安装acme.sh

curl  https://get.acme.sh | sh -s   # 请确保已安装 curl

显示Install success!即为安装成功

使用凭据注册

acme.sh --set-default-ca --server google #切换默认 CA 为 Google
acme.sh --server https://dv.acme-v02.api.pki.goog/directory \
--register-account  --accountemail <Your_Email> --eab-kid <keyid> --eab-hmac-key <hmac_key> # 使用刚刚获取凭据注册账号

签发证书

  1. 使用 TXT 记录手动验证 DNS
acme.sh  --issue  --dns   -d yourdomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

然后根据回显中

Add the following TXT record:
Domain: '_acme-challenge.yourdomain.com'
TXT value: '<TXT_value>'

设置 DNS 记录,完成后输入

acme.sh  --renew   -d yourdomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

完成证书申请

显示Cert success即为申请成功

可以在~/.acme.sh/yourdomain.com/下获取证书

  1. 使用 Cloudflare API 自动验证 DNS

(注:这里默认使用了 Cloudflare 来演示自动申请证书,详细的支持列表及申请方法可以在这里找到)

首先获取你的Global API Key可在此处获取

然后在终端中输入

export CF_Key='<YourGlobalAPIKey>'
export CF_Email="<YourEmail>"

接下来申请证书,输入

acme.sh --issue --dns dns_cf -d yourdomain.com #单域名
acme.sh --issue --dns dns_cf -d *.yourdomain.com #泛域名
acme.sh --issue --dns dns_cf -d sub1.yourdomain.com -d sub2.yourdomain.com #多域名
acme.sh --issue --dns dns_cf -d yourdomain.com --ecc #ECC 证书

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

文中部分信息已做脱敏处理

注:申请下的证书路径为

参考文献

  1. acme.sh Wiki - github.com

  2. Automate Public Certificates Lifecycle Management via RFC 8555 (ACME) - google.com

6219 次点击
所在节点    分享创造
30 条回复
ab
2023-01-20 19:06:33 +08:00
国内 VPS 可以吗?
jonathon523
2023-01-20 19:59:59 +08:00
@ab 可以的,在国内有申请节点,但是需要先魔法在 Google Cloud Shell 获得 b64MacKey 和 keyid
666VS2333
2023-01-20 21:25:32 +08:00
到期可以续吗
jonathon523
2023-01-20 21:33:04 +08:00
@666VS2333 可以的,支持 acme.sh 自动续期
666VS2333
2023-01-20 22:48:16 +08:00
@jonathon523 感谢老哥
daiv
2023-01-20 23:06:18 +08:00
Let's Encrypt / ZeroSSL

现在多了这个, 给个切换的理由呗
jonathon523
2023-01-21 01:19:11 +08:00
@daiv 国内 VPS 申请方便;根 CA 为 GlobalSign ,根 CA 的支持性和兼容性比 Let's Encrypt 好;签发速度比 ZeroSSL 快得多,ZeroSSL 经常时不时抽风,这个不会。
superares
2023-01-21 08:18:17 +08:00
可惜还是 preview 状态,cert-manager 还不支持
simau
2023-01-21 08:56:07 +08:00
补充一下:需要先设置一下自己的 project id ,project id 可以在 gcp console 页找到,$ gcloud config set project project_id
jonathon523
2023-01-21 08:59:56 +08:00
@superares 已经是 Public Review 了
官方文档里面有说
For Kubernetes based workloads
If you are using Kubernetes, thanks to cert-manager (another ACME client), it is just as easy.
具体请看 https://cloud.google.com/blog/products/identity-security/automate-public-certificate-lifecycle-management-via--acme-client-api
jonathon523
2023-01-21 09:03:28 +08:00
@simau 可以先在 console.cloud.google.com 顶栏选好项目再点击 Cloud Shell 的图标创建 session ,或者在 shell.console.cloud.google.com 标签页切换栏中点击加号旁边的三角,选择对应的 project id
jonathon523
2023-01-21 09:11:43 +08:00
@daiv 还想到一个,Let's Encrypt 的证书因为很多翻墙的人和灰产在用,会被 GFW 重点关照。
simau
2023-01-21 09:20:16 +08:00
@jonathon523 刚刚试过了,没魔法访问不了 https://dv.acme-v02.api.pki.goog ,op 确定是可以访问?
superares
2023-01-21 10:27:32 +08:00
@jonathon523 好使。和 ZeroSSL 的方式一样
jonathon523
2023-01-21 10:32:20 +08:00
@simau 刚刚测试了一下好像确实访问不了了,估计是这两天刚墙
我待会儿看看能不能搞个反向代理用
me221
2023-01-21 13:27:51 +08:00
感谢分享, 不过国内不能顺利申请
winterbells
2023-01-21 16:05:34 +08:00
jonathon523
2023-01-21 16:14:02 +08:00
@winterbells IP 地址证书需要 IP 地址块持有者申请,acme 没法搞
siknet
2023-01-21 16:33:31 +08:00
有老哥弄个自动续期的脚本嘛
me221
2023-01-21 18:36:30 +08:00
我打算用 actions 自动续期, 发现 hmac_key 和 keyid 只能用一次....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX