Google Cloud 在上个月也推出了通过 Automatic Certificate Management Environment(也就是我们常说的 acme 协议)实现的自动化证书管理服务。这也意味着我们现在可以免费申请到和 Let’s Encrypt 一样的 Google 公共证书了,主要特性如下:
- 支持多域名以及通配符证书(通配符证书目前需要通过 DNS 验证)
- 支持申请 ECC 和 RSA 证书
- 支持申请 IP 证书(目前只能该 IP Block 的所有者进行验证)
- 证书最长有效期 90 天
- 不支持 IDN 域名
- OCSP 地址为 ocsp.pki.goog,有国内服务器节点
1、查看 Project ID
https://console.cloud.google.com/apis/dashboard
复制上面链接进入到谷歌云控制台,点击左上角你的项目名称,随后即可在弹出的列表中查看到你的 Project ID 。
2、启用 API
打开如下链接,启用 API ,其中
https://console.cloud.google.com/apis/library/publicca.googleapis.com?project=<Project ID>
打开该链接后点击“启用”,随后等待右侧出现“API已启用”则可以关闭该页。
3、申请 KEY
随后打开 Google Cloud Shell(在右上角点击激活 CloudShell 图标)
等待分配完成后在 Shell 窗口内输入如下命令:
gcloud config set project <Project ID>
gcloud beta publicca external-account-keys create
此时会弹出 为 Cloud Shell 提供授权,点击授权即可。
执行完成后会返回类似如下输出;注意不要在没有收到 Google 的邮件时执行该命令,会返回命令不存在。
返回结果大概是下面这样:
Created an external account key
[b64MacKey: xxx
keyId: xxx]
4、申请证书
4.1、安装 ACME
执行如下命令自动安装,注意替换自己的邮箱
curl https://get.acme.sh | sh -s email=<EMAIL>
source ~/.bashrc
4.2、签发证书
以使用 Cloudflare 的 API 为例,通过 DNS 验证申请通配符证书
获取 Cloudflare API,可以自己选择全局 API 还是单域 API,我这里选择了单域 API,获取到 API 后注意保存,然后导入:
# 单域
export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxxxxxxxxxx"
# 全局
export CF_Key='xxxxxxxxxxxxxxxxxxxxxxxx'
export CF_Email="你的cloudflare邮箱"
其中 CF_Token
为你获取到的 API 密钥,CF_Account_ID
和 CF_Zone_ID
可以在你域名概述页面侧边栏的 API 分栏看到。
4.3、设置 API
acme.sh --register-account -m <EMAIL> --server google \
--eab-kid xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--eab-hmac-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--server google
也可以改成 --server https://dv.acme-v02.api.pki.goog/directory
手动指定服务器
API 获取的凭证应该是只能使用一次,重新获取 API 凭证之后可以成功注册
4.4、设置默认 CA
如果你一台服务器上有多个域名的 acme 任务,则可能自动更新失败,因此这里推荐使用 --accountconf
指定一个配置文件
acme.sh --set-default-ca --server google --accountconf /root/.acme.sh/account-custom.conf
4.5、签证书
没有特殊指定:
acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com --accountconf /root/.acme.sh/account-custom.conf
ECC 证书
acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com --ecc --accountconf /root/.acme.sh/iyumetop.conf --dnssleep 30
4.6、多证书添加Cron
使用了 --accountconf
参数指定了配置文件,此时你的 Cron 自动任务也要做出对应的修改,运行 crontab -e
进行修改(如果有多个域名则应该相应的有多个任务)
30 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" --accountconf "/root/.acme.sh/account-custom.conf" > /dev/null
5、安装证书
申请证书成功过后可以将证书安装到指定目录下
acme.sh --install-cert -d mydomain.com
--key-file /path/to/ssl/private.key
--fullchain-file /path/to/ssl/fullchain.pem
如果是ECC的,执行下面的:
acme.sh --install-cert -d mydomain.com --ecc
--key-file /path/to/ssl/ecc_private.key
--fullchain-file /path/to/ssl/ecc_fullchain.pem
评论 (0)