前言
前几天发现acme能申请谷歌的ssl证书,于是就想试试新的证书,废话不多说直接上申请的过程:
step1 登录谷歌账号
登录谷歌账号,然后点击链接:https://console.cloud.google.com/apis/library/publicca.googleapis.com?project=temporal-genius-1919810
点击启用。
step2 打开Google cloud shell
等启用完成后点击右上角激活cloud shell,打开Google cloud shell。
step3 在Cloud Shell输入如下代码
一台vps仅需申请一个,不更换vps的话无需重复申请key
gcloud beta publicca external-account-keys create
接着会返回keyid和b64mackey:
Created an external account key
[b64MacKey: xxxxxxxxxxxxxxxxxxx
keyId: xxxxxxxxxxxx]
step4 安装Acme.sh
已安装的跳过这步
curl https://get.acme.sh | sh -s email=你的邮箱
把Acme.sh安装在根目录下,安装在哪都行。
~/.acme.sh/
step5 修改默认CA
Acme.sh默认生成Let’s Encrypt R3证书,我们需要让它默认生成google证书:
./acme.sh --set-default-ca --server google
step6 获取申请google证书的资格:
./acme.sh --register-account -m 刚刚申请key的谷歌账号邮箱 --server google \
--eab-kid xxxxxx \
--eab-hmac-key xxxxxxxx
step7 准备申请证书
我现在一般习惯用dns验证的办法申请证书,感觉比较方便。
这里以我用的cloudflare为例:
登录 Cloudflare 控制台 – 点击域名 – 复制保存账户 ID即为Account ID – 点击获取您的API令牌
选择API令牌点击创建令牌
创建自定义令牌
填写令牌名称 – 添加两项权限 – 继续
复制保存创建的API令牌即为Token
step8 设置常量
登录到vps,然后输入如下命令:
export CF_Token="xxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
上述“xxxx”同前面替换为你在第七步得到的TOKEN和Account ID。
step9 开始签发证书
acme.sh --issue --dns dns_cf -d example.com -d *.example.com
将example.com换成你自己要签的域名。
上面的代码签发的是根域名+泛域名的组合,根据个人习惯可以改成其他组合,这样做的好处的是之后不用为一个个子域名单独签证书,管理起来比较方便。
出现下面的内容表示签发成功。
step10 安装证书
acme.sh --install-cert -d example.com \
--key-file /your_path/example.key \
--fullchain-file /your_path/example.crt \
--reloadcmd "service nginx force-reload"
安装完成后就可以在nginx相关位置引用证书如:
ssl_certificate /data/example.crt;
ssl_certificate_key /data/example.key;
结语
国内访问速度不知道Google的ssl证书会不会比R3的ssl证书快,但是网站的证书看上去和Google、YouTube证书差不多,心理上舒服一点。瞬间高大上,B格拉满了