其实对于大多数个人用户来说, 申请 SSL 应该都是不可避免的, 且大多数都会去选择一些免费的证书. 比如 Let’s Encrypt, TrustAsia, DigiCert 等.

Let’s 的好处应该就是可以免费申请通配符证书, 这点比较方便, 但证书有效期只有3个月. TrustAsia 可以提供最长1年的证书. (一般来说 证书有效期不能超过398天)

Google 在 今年的 3月30日 也推出了类似 Lets 的免费证书申请, 有效期最长也为3个月, 目前仍然处于内测状态. 不过既然是免费 那为何不试一试.

优劣势

  1. 支持通配符以及多域名.
  2. 支持为 IP 申请证书.
  3. 支持设置 1~90 天的有效期.
  4. 但是目前其不支持 IDN 域名 (常见的 包含中文的域名不行)

申请内测

创建 Project

首先需要申请一个 Google Cloud Platform 账户, 创建一个自己的项目并记录下其 project ID

Project ID

填写申请表单

https://docs.google.com/forms/d/1Euhflb5CXpuLik8czElhyAloTZJZobar4086dmlPqXA

Reuqest form

Google Cloud Project ID 处填写上文记下的 Project ID 即可.

接着可能需要等待两到三天, 通过后 会收到一封 主题为 ‘Welcome to Google Cloud Certificate Manager, Public CA’的 邮件.

准备申请

启用 API

在通过内测申请后, 我们需要启用 ‘Public Certificate Authority API’. 进入 API服务 中选择你申请内测时的 Project ID, 点击启用.

https://console.cloud.google.com/apis/library/publicca.googleapis.com?project=project-id (注意替换上文的 Project ID)

获取密钥

接着点击 右上角的 ‘激活 Cloud Shell’ 来快速申请相关密钥:

cloud shell

介入

1
gcloud beta publicca external-account-keys create

期待返回

1
2
3
Created an external account key
[b64MacKey: KEYHASH
keyId: KEYID]

签发证书

安装 acme.sh

在签发证书之前, 您的设备需要有 acme.sh 的环境, 可以通过

1
curl  https://get.acme.sh | sh -s

快速安装.

签发

注册

1
2
3
4
5
acme.sh --register-account \
--server https://dv.acme-v02.api.pki.goog/directory \
--server google -m user@example.com \ # 邮箱
--eab-kid {KEYID} \ # 上文得到的 keyId
--eab-hmac-key {KEYHASH} # 上文得到的 b64MacKey

开始申请

1
2
3
acme.sh --server google --issue -d *.example.com \ # 域名
--keylength ec-256 --force \
--dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

提交过后需要你去 解析相关的 TXT 记录用来验证身份, 解析好了后, 通过 --renew 来完成证书申请

1
2
acme.sh --server google --renew -d *.example.com \ # 域名
--dns --ecc --yes-I-know-dns-manual-mode-enough-go-ahead-please

为了让 Nginx 使用该证书, 可以通过 acme 安装证书并自动续期

1
2
3
4
acme.sh --installcert -d *.example.com --ecc \
--key-file /usr/local/nginx/conf/ssl/example.com.key \
--fullchain-file /usr/local/nginx/conf/ssl/example.com.crt \
--reloadcmd "service nginx force-reload"

安装后还需要修改 网站相关配置文件 来启用ssl访问.