ACME.SH 签发Google SSL证书
好耶,又一个免费公共SSL证书

3月30日,Google开放了自家SSL公共证书申请,其公共证书目前还处于内测阶段。

可在 Google Cloud 博客上看到 Automate Public Certificates Lifecycle Management via RFC 8555 (ACME)


Google SSL 特性

  • 免费(白嫖真香)
  • 比Let’s Encrypt R3/E1 证书链兼容性强了 114514 倍
  • 支持 多域名泛域名
  • 支持 IP 证书(仅允许 IP Block 的所有者验证)
  • 支持 ECC证书 目前仅叶证书是 ECDSA
  • 不支持 IDN (Punycode 编码,如中文域名)
  • Google CA 的 ACME API 在大陆无法访问
  • 其他

acme.sh 支持的CA中, Google SSL证书与其他免费SSL证书之间的比较
Compare the features supported by the known CAs

CAMaxLifetimeECCDomain CountWildcardIPv4IPv6NotAfterIDN
Let’s Encrypt90Yes100YesNoNoNoYes
ZeroSSL90Yes100YesNoNoYesYes
Google90Yes100YesNoNoYesNo
Buypass180Yes5PaidNoNoNoYes
SSL.com90Yes2PaidNoNoNoYes
HiCA180Paid10 (1 if Wildcard)YesPaidPaidNoPaid

全文签发以 非DNS API ECC泛域名证书 为例

获取相关凭据

Google Cloud CLI

前提:需要有 Google Cloud Platform (GCP) 账户

Google Cloud Web Shell

申请相关权限

点击此处 申请证书内测Api权限(请自行想办法打开.jpg)其中电子邮件填写你的GCP账户,Google Cloud Project ID可在 cloud.google.com 里找,左上角项目切换点开就能得到。

坐和放宽,过几天就能收到邮件回复。

目前已结束内测,不需要再申请内测资格。

获取 EAB 密钥凭据

打开 console.cloud.google.com/apis/library/publicca.googleapis.com 左上角项目选择对应的项目,或链接后加上 /?project=你的Project ID 直接打开,并点击"启用"。

点击右上角的"激活Cloud Shell",成功授权后在Cloud Shell 输入

gcloud publicca external-account-keys create

即可获取 EAB 密钥ID 和 EAB HMAC keyId, b64MacKey

Created an external account key
[b64MacKey: xxxxxx
keyId: xxxxxx]

7 天内未使用 EAB 密钥的话,密钥会失效

Shell

在你的服务器上安装 gcloud cli

### Debian 9+ or Ubuntu 18.04+ ###

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates gnupg curl
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get update && sudo apt-get install google-cloud-cli

执行 gcloud init 初始化操作后,参考上方 Web Shell 即可食用

Google Domains

前提:需要在Google Domains托管域名

本方法适用于账号未注册GCP的人食用。

登录 Google Domains,随意选择一个域名后,点击安全 - 高级安全功能 - Google Trust Services,只需要点击获取EAB密钥 即可获得对应凭据。

btw: Google Domains 已被谷歌关门部斩杀

申请签发证书

  1. 安装acme.sh

如果你正在使用如 Oneinstack, LNMP.org, bt.cn, 1Panel 等服务器面板或管理脚本的话,对应程序可能已安装或集成了acme.sh。

curl https://get.acme.sh | sh -s
  1. 注册账号
acme.sh --register-account \
        --server https://dv.acme-v02.api.pki.goog/directory \
        --server google -m [Your Mail]] \
        --eab-kid [Your keyId] \
        --eab-hmac-key [Your b64MacKey]

  1. 签发证书
acme.sh --server google --issue -d [Your Domain] \
		--keylength ec-256 --force \
		--dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

  1. 验证证书

在域名解析服务商(我用的是华为云解析)添加对应TXT Record,添加后验证证书并颁发。

acme.sh	--server google --renew -d [Your Domain] \
  		--ecc --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

  1. 安装证书
acme.sh --installcert -d [Your Domain] --ecc \
		--key-file /usr/local/nginx/conf/ssl/[Your Private Cert Path] \
		--fullchain-file /usr/local/nginx/conf/ssl/[Your Cert Path] \
		--reloadcmd "service nginx force-reload"

题外

申请的acme.sh服务器API dv.acme-v02.api.pki.goog 在大陆是被墙的,所以要在国内服务器申请需自己想办法解决

OCSP 地址是 ocsp.pki.goog,在大陆解析为谷翔IP段(AS24424),但恐怖的是似乎少了什么东西(逃

其实谷歌在国内正常运作的域名都没有备案号,依然正常解析使用国内服务器,毕竟谷歌中国业务包括Datacenter


上次修改於 2023-12-13