使用 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 条回复
winterbells
2023-01-21 20:20:37 +08:00
@jonathon523 噢噢,突然理解了
daiv
2023-01-21 22:24:41 +08:00
@me221 #20 啊, 那岂不是很不方便
jonathon523
2023-01-22 00:10:20 +08:00
@me221 对的。但是限制仅限注册,所以建议服务器上部署来实现自动续期,或者发布一个私有的已经注册完成的 docker 实现

@daiv acme.sh 还是会在你申请的服务器上创建定时任务,进行续期的,但是对于 action 这种每次都相当于新的服务器,需要重新注册,那就必须得换或者直接用注册好的 docker 镜像了
bugfan
2023-01-22 23:56:37 +08:00
@siknet 哈哈 你看看 https://www.i996.me 里面的证书签发功能,只需要 2 步,就能帮你签好证书,支持房,域名证书,而且这个支持以文件夹方式下载和 http api 方式获取,方便你集成到自己程序里。如果你用 nginx 可以用文件夹方式获取,配置到计划任务就行了
jonathon523
2023-01-23 08:40:46 +08:00
@siknet acmesh 还是会在你申请的服务器上创建定时任务,进行续期的
chancat
2023-01-23 12:41:09 +08:00
谢谢分享,看看先
blankmiss
2023-01-23 17:09:04 +08:00
能签泛域名吗
jonathon523
2023-01-23 18:29:14 +08:00
@blankmiss 可以的
elboble
2023-01-26 15:23:40 +08:00
已经用上了,暂时没发现区别。

对了,原来没用过 google 的云服务,这样算开了服务,会收费吗??
jonathon523
2023-01-27 09:36:03 +08:00
@elboble 这个是免费的,不会收费

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

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

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

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

© 2021 V2EX