前言
什么是ACME协议? 自动化证书管理环境(ACME)是用于自动验证X.509证书的域验证,安装和管理的标准协议。 ACME协议由Internet安全研究小组设计,并在 [链接登录后可见]。 作为具有许多可用的客户端实现的文档齐全的开放标准,ACME 被广泛用作企业证书自动化解决方案。
2022 年 3 月 30 日,谷歌 GTS([链接登录后可见])在其博客上发表了名为:[链接登录后可见]。即推出了基于 RFC 8555 (ACME)的证书签发服务。
文章大意是:Google Cloud 推出了自动化的公共证书管理服务,现在大家可以通过 ACME 协议申请 Google Trust Services 的证书了。
那么,想要使用来自谷歌的技术红利的话,那就敬请看下文吧。
特点
通过博文的内容,我们可以得知该 CA 服务具有以下特点:
- 免费,且仅支持 ACME 协议进行申请
- 支持多域名及通配符(与 Let's Encrypt 相同)
- 仅支持 DNS 验证和文件验证,不支持邮件验证(与 Let's Encrypt 相同)
- 支持 IP 地址,但是仅允许该 IP 地址块的所有者进行验证(Let's Encrypt 暂不支持)
- 不支持 IDN (使用 Punycode 进行编码的域名,形如 xn--1.xn--2)(Let's Encrypt 已经支持)
- 目前不提供完整 ECDSA 链,若 CSR 为 ECC,则仅最终用户证书为 ECDSA(Let's Encrypt 已经支持全链 ECDSA)
- 证书有效期在 1 - 90 天内可选,但是目前 ACME 客户端似乎都还不支持设置证书有效期
- 国内的 OCSP 由北京和上海的谷翔机房负责,未受阻断且速度不错(链接:ocsp.pki.goog)
由于谷歌 GTS 的 ACME Endpoint 被阻断,国内服务器需要使用特殊手段进行申请
使用
准备
由于该项服务仍处于测试阶段,所以想要使用需要进行申请审核。
先准备一个 Google Cloud Platform 账号,可以使用 Google 账号直接登录,从官网进入需要验证信用卡激活账户,但是只是申请使用 GTS 的 API 服务只需要一个账户。直接进入以下页面,创建一个项目:[链接登录后可见]。
项目名称随意,项目 ID 可选择随机或者自定义,日后需要。
创建好了之后,到这个页面填写申请表:[链接登录后可见]
只需要如实填写项目 ID,其他随意。
等待一天左右(工作日更快)就会收到以下来信,提示您已经通过审核,如下图:
随后进入您的 Google Cloud Platform 项目控制台,进入这个地址:代码登录后可见
点击启用服务,即可对您的项目开启 GTS 证书申请服务的 API 了。
点击右上角的按钮,进入 Cloud Shell 终端,接着就会进入 Google Cloud Platform 的终端系统,如下图:
接着按照提示,输入
代码登录后可见
会弹出提示让您授权项目访问权限,如下图,授权即可:
(如果之前设置过,下次会自动进入项目不需要授权。)
执行下面的指令,会获取您当前项目的密钥,用于后续验证账户:
代码登录后可见
之后会返回以下内容:
代码登录后可见
保存项目密钥的 b64MacKey 和 keyId,转到服务器端进行获取。
申请
ACME 有很多客户端可以进行证书申请,这里演示 acme.sh:
如下教程基于 Ubuntu Server 20.04 LTS 系统进行演示,使用腾讯云香港 CVM 作为实例
acme.sh 的 Github 项目仓库,详细用法请参阅此项目 Wiki:
[链接登录后可见]
使用 acme.sh 签发
1 . 安装
执行以下命令以安装脚本
代码登录后可见
命令行输出 Install success! 即为安装成功,直接运行 acme.sh 查看是否可以使用。
1.2 . 导入 DNS 服务商的 API 进行自动续签(可选)
详情请查阅官方文档([链接登录后可见])
2. 注册 ACME 账户
代码登录后可见
执行以上命令将会在 Google 的服务器注册 ACME 账户,成功后效果如下:
3. 申请证书
通常情况下,如果您设置了 DNSAPI,只需按照下列命令,即可完成签发
代码登录后可见
如果想要自行进行 DNS 解析,执行下列命令:
代码登录后可见
按照输出的提示进行解析即可,如下图:
进入 DNS 服务商的控制台,按照提示进行解析,如下图:
按照提示内容进行解析后,再次执行下列命令进行确认:
代码登录后可见
(注意域名需要和申请时相同)
以上两种方法,成功后会提示以下内容:
使用 WinSSH 等工具,即可将签发的证书下载到本地进行使用。
3.1 可选参数
-d 即签发域名的参数,可创建多个,支持使用 *.example.com 类的通配符
--keylength 即签发域名的算法,支持以下算法:
- ec-256 (prime256v1, "ECDSA P-256")
- ec-384 (secp384r1, "ECDSA P-384")
- ec-521 (secp521r1, "ECDSA P-521")
如未配置,即为默认的 RSA 2048 密钥算法。
使用 certbot 签发
详细文档查看 [链接登录后可见]
1. 安装
使用以下命令进行 Certbot 在 Ubuntu Server 20.04 LTS 环境下的安装:
代码登录后可见
安装完成后,输入 certbot -h 命令以测试是否部署成功,如下图:
2. 注册 ACME 账户
输入以下命令即可在 Certbot 注册并保存 ACME 账户:
代码登录后可见
执行后会需要您同意 GTS 的协议,输入 a 即可,完成后效果如下图:
2.1. 部署 DNS 服务商插件(可选)
与 acme.sh 不同,certbot 并不自带 DNSAPI 的自动部署,如需该功能请自行查阅官方文档:[链接登录后可见]
3. 签发证书
如果您部署了 DNS 服务商插件,请自行参阅其提供的验证参数,如果手动解析 DNS,请执行以下命令:
代码登录后可见
执行后会询问您是否同意协议,如下图:
如果同意,需要您在网站目录下按照提示添加文件,返回信息如下图:
文件创建完成后进行回车,即可完成验证。
3.1 可选参数
Certbot 提供了大量可选的执行参数,详情可参阅 [链接登录后可见],可在此查阅如何签发 ECDSA 密钥算法的证书,因篇幅问题不再赘述。
完全自动化部署
Nginx 服务器
使用 acme.sh 提供的 Nginx 模式,可以自动部署到 Nginx 的网站配置文件,实现完全自动化。
通过执行以下命令,即可使用 Webroot 模式,在自动签发证书时自动创建验证文件,以达成自动签发:
代码登录后可见
签发文件到网站证书存放目录
使用此方法可防止 acme.sh 无法正确修改网站配置时使用,执行以下命令:
代码登录后可见
如需证书链,请添加以下参数
代码登录后可见
Apache 服务器
使用 acme.sh 提供的 Apache 模式,可以自动部署到 Apache 的网站配置文件,实现完全自动化。
通过执行以下命令,即可使用 Webroot 模式,在自动签发证书时自动创建验证文件,以达成自动签发:
代码登录后可见
签发文件到网站证书存放目录
使用此方法可防止 acme.sh 无法正确修改网站配置时使用,执行以下命令:
代码登录后可见
结语
谷歌 GTS 新公开的 SSL 证书还是很不错的,使用 GlobalSign Root CA 作为根证书,兼容性极佳,下至 Windows XP 系统依旧可以访问,并且在国内有 OCSP 服务器,有利于访客的体验。可以使用 ACME 协议进行自动签发,一次折腾,后续都不需要操心了。这样的好处希望各大互联网大厂都能提供免费 CA 服务,造福于广大站长。
同步发布于:
[链接登录后可见]
[链接登录后可见]