本文原创于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.shcurl  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用于续期目的文中部分信息已做脱敏处理

|  |      1ab      2023-01-20 19:06:33 +08:00 国内 VPS 可以吗? | 
|  |      2jonathon523 OP @ab 可以的,在国内有申请节点,但是需要先魔法在 Google Cloud Shell 获得 b64MacKey 和 keyid | 
|  |      3666VS2333      2023-01-20 21:25:32 +08:00 via Android 到期可以续吗 | 
|  |      4jonathon523 OP | 
|  |      5666VS2333      2023-01-20 22:48:16 +08:00 via Android @jonathon523 感谢老哥 | 
|  |      6daiv      2023-01-20 23:06:18 +08:00 Let's Encrypt / ZeroSSL 现在多了这个, 给个切换的理由呗 | 
|  |      7jonathon523 OP @daiv 国内 VPS 申请方便;根 CA 为 GlobalSign ,根 CA 的支持性和兼容性比 Let's Encrypt 好;签发速度比 ZeroSSL 快得多,ZeroSSL 经常时不时抽风,这个不会。 | 
|      8superares      2023-01-21 08:18:17 +08:00 via iPhone 可惜还是 preview 状态,cert-manager 还不支持 | 
|      9simau      2023-01-21 08:56:07 +08:00 补充一下:需要先设置一下自己的 project id ,project id 可以在 gcp console 页找到,$ gcloud config set project project_id | 
|  |      10jonathon523 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 | 
|  |      11jonathon523 OP @simau 可以先在 console.cloud.google.com 顶栏选好项目再点击 Cloud Shell 的图标创建 session ,或者在 shell.console.cloud.google.com 标签页切换栏中点击加号旁边的三角,选择对应的 project id | 
|  |      12jonathon523 OP @daiv 还想到一个,Let's Encrypt 的证书因为很多翻墙的人和灰产在用,会被 GFW 重点关照。 | 
|      13simau      2023-01-21 09:20:16 +08:00 @jonathon523 刚刚试过了,没魔法访问不了 https://dv.acme-v02.api.pki.goog ,op 确定是可以访问? | 
|      14superares      2023-01-21 10:27:32 +08:00 @jonathon523  好使。和 ZeroSSL 的方式一样 | 
|  |      15jonathon523 OP @simau 刚刚测试了一下好像确实访问不了了,估计是这两天刚墙 我待会儿看看能不能搞个反向代理用 | 
|      16me221      2023-01-21 13:27:51 +08:00 感谢分享, 不过国内不能顺利申请 | 
|  |      17300      2023-01-21 16:05:34 +08:00 | 
|  |      18jonathon523 OP @winterbells IP 地址证书需要 IP 地址块持有者申请,acme 没法搞 | 
|      19Hansah      2023-01-21 16:33:31 +08:00 via Android 有老哥弄个自动续期的脚本嘛 | 
|      20me221      2023-01-21 18:36:30 +08:00 我打算用 actions 自动续期, 发现 hmac_key 和 keyid 只能用一次.... | 
|  |      21300      2023-01-21 20:20:37 +08:00 via Android @jonathon523 噢噢,突然理解了 | 
|  |      23jonathon523 OP | 
|      24bugfan      2023-01-22 23:56:37 +08:00 via iPhone @siknet 哈哈 你看看 https://www.i996.me 里面的证书签发功能,只需要 2 步,就能帮你签好证书,支持房,域名证书,而且这个支持以文件夹方式下载和 http api 方式获取,方便你集成到自己程序里。如果你用 nginx 可以用文件夹方式获取,配置到计划任务就行了 | 
|  |      25jonathon523 OP @siknet acmesh 还是会在你申请的服务器上创建定时任务,进行续期的 | 
|  |      26chancat      2023-01-23 12:41:09 +08:00 via Android 谢谢分享,看看先 | 
|  |      27blankmiss      2023-01-23 17:09:04 +08:00 能签泛域名吗 | 
|  |      28jonathon523 OP @blankmiss 可以的 | 
|      29elboble      2023-01-26 15:23:40 +08:00 已经用上了,暂时没发现区别。 对了,原来没用过 google 的云服务,这样算开了服务,会收费吗?? | 
|  |      30jonathon523 OP @elboble 这个是免费的,不会收费 |