本文原创于Cestlavie Blog|原文链接
最近谷歌开放了自家的 GTS CA(Google Trust Services),谷歌作为全球大厂那不得好好嫖一下!目前该服务进入了 Public Review 阶段,不再需要申请内测资格,而且支持 acme.sh 快速申请,那不就是嫖他的好日子来了吗!
GTS SSL 证书的特点是
支持 IP 地址块持有者申请 IP 地址证书
根 CA 为 GlobalSign,根 CA 的支持性和兼容性比 Let's Encrypt 好
支持安全性和性能更好的ECC 证书
支持多域名、泛域名证书申请(例如*.cestlavie.moe
)
有效期为90 天
支持的 ACME 验证方式为TLS-ALPN-01
、HTTP-01
、和 DNS-01
暂不支持邮箱验证方式申请
暂不支持以国际化域名编码的域名
打开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> # 使用刚刚获取凭据注册账号
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/
下获取证书
(注:这里默认使用了 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/
下获取证书
~/.acme.sh/account.conf
用于续期目的文中部分信息已做脱敏处理
1
ab 2023-01-20 19:06:33 +08:00
国内 VPS 可以吗?
|
2
jonathon523 OP @ab 可以的,在国内有申请节点,但是需要先魔法在 Google Cloud Shell 获得 b64MacKey 和 keyid
|
3
666VS2333 2023-01-20 21:25:32 +08:00 via Android
到期可以续吗
|
4
jonathon523 OP |
5
666VS2333 2023-01-20 22:48:16 +08:00 via Android
@jonathon523 感谢老哥
|
6
daiv 2023-01-20 23:06:18 +08:00
Let's Encrypt / ZeroSSL
现在多了这个, 给个切换的理由呗 |
7
jonathon523 OP @daiv 国内 VPS 申请方便;根 CA 为 GlobalSign ,根 CA 的支持性和兼容性比 Let's Encrypt 好;签发速度比 ZeroSSL 快得多,ZeroSSL 经常时不时抽风,这个不会。
|
8
superares 2023-01-21 08:18:17 +08:00 via iPhone
可惜还是 preview 状态,cert-manager 还不支持
|
9
simau 2023-01-21 08:56:07 +08:00
补充一下:需要先设置一下自己的 project id ,project id 可以在 gcp console 页找到,$ gcloud config set project project_id
|
10
jonathon523 OP @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 |
11
jonathon523 OP @simau 可以先在 console.cloud.google.com 顶栏选好项目再点击 Cloud Shell 的图标创建 session ,或者在 shell.console.cloud.google.com 标签页切换栏中点击加号旁边的三角,选择对应的 project id
|
12
jonathon523 OP @daiv 还想到一个,Let's Encrypt 的证书因为很多翻墙的人和灰产在用,会被 GFW 重点关照。
|
13
simau 2023-01-21 09:20:16 +08:00
@jonathon523 刚刚试过了,没魔法访问不了 https://dv.acme-v02.api.pki.goog ,op 确定是可以访问?
|
14
superares 2023-01-21 10:27:32 +08:00
@jonathon523 好使。和 ZeroSSL 的方式一样
|
15
jonathon523 OP @simau 刚刚测试了一下好像确实访问不了了,估计是这两天刚墙
我待会儿看看能不能搞个反向代理用 |
16
me221 2023-01-21 13:27:51 +08:00
感谢分享, 不过国内不能顺利申请
|
17
winterbells 2023-01-21 16:05:34 +08:00
|
18
jonathon523 OP @winterbells IP 地址证书需要 IP 地址块持有者申请,acme 没法搞
|
19
siknet 2023-01-21 16:33:31 +08:00 via Android
有老哥弄个自动续期的脚本嘛
|
20
me221 2023-01-21 18:36:30 +08:00
我打算用 actions 自动续期, 发现 hmac_key 和 keyid 只能用一次....
|
21
winterbells 2023-01-21 20:20:37 +08:00 via Android
@jonathon523 噢噢,突然理解了
|
23
jonathon523 OP |
24
bugfan 2023-01-22 23:56:37 +08:00 via iPhone
@siknet 哈哈 你看看 https://www.i996.me 里面的证书签发功能,只需要 2 步,就能帮你签好证书,支持房,域名证书,而且这个支持以文件夹方式下载和 http api 方式获取,方便你集成到自己程序里。如果你用 nginx 可以用文件夹方式获取,配置到计划任务就行了
|
25
jonathon523 OP @siknet acmesh 还是会在你申请的服务器上创建定时任务,进行续期的
|
26
chancat 2023-01-23 12:41:09 +08:00 via Android
谢谢分享,看看先
|
27
blankmiss 2023-01-23 17:09:04 +08:00
能签泛域名吗
|
28
jonathon523 OP @blankmiss 可以的
|
29
elboble 2023-01-26 15:23:40 +08:00
已经用上了,暂时没发现区别。
对了,原来没用过 google 的云服务,这样算开了服务,会收费吗?? |
30
jonathon523 OP @elboble 这个是免费的,不会收费
|