ZeroSSL和Buypass在acme端都有提供别具特色的证书服务。ZeroSSL与Let‘s Encrypt功能重合且没有签发速率限制,此外Sectigo的根证书以及网站管理页面也是不错的加分项。至于Buypass,其能够免费签发180天的DV单域名证书,与亚信等用途类似不过并不需要实名认证或者手机号之类的敏感信息,大概是除了亚信之外有效期最长的免费DV证书了。
其他关于免费SSL的相关的内容我之前有一篇文章有介绍,有兴趣可以去看看。
【杂谈】免费SSL证书那点事
之前不少人都是直接在freessl.org
这个套壳ACME的网站进行签发,后来改版之后就只剩下付费的选择了。而ACME在设计上更倾向于证书托管自动更新的方式,而像我这种临时签发证书测试或者用在一些不能使用ACME的平台上时,手动签发还是有一定的意义,也就把用到的操作记录下了方便自己后面查看。
安装ACME的服务器要与Buypass以及ZeroSSL的API能够稳定通信,我这里就用的腾讯云香港的轻量作为演示,不仅国内操作比较稳定而且国际方向速度也很快。前段时间宝塔发布了鹅厂定制版并且组队赠送了很多的轻量代金卷,活动现在依然在继续有兴趣可以去看看,相信选择轻量的大佬应该不在少数。
一、安装ACME
只需要执行一下这条命令就可以一键安装,然后我并没有把证书托管到他自动化所以就直接在crontab -e
将它的计划任务注释掉了。
1 |
curl https://get.acme.sh | sh |
二、配置API
Buypass比较简单,只需要提供一个邮箱通过以下命令注册一个账户即可。
1 |
acme.sh --server https://api.buypass.com/acme/directory --register-account --accountemail [你的邮箱] |
ZeroSSL获取EAB凭证,在其开发者页面可以申请(点击前往),然后执行以下命令将账户信息导入ACME。
1 |
acme.sh --register-account --server zerossl --eab-kid [账户eab-kid] --eab-hmac-key [账户eab-hmac-key] |
谷歌的ACME服务器也是最近新出的,更新到最新版的acme.sh后,在谷歌云申请好相应的凭证后将以下信息导入。
1 |
acme.sh --register-account -m [账户邮箱] --server google --eab-kid [账户keyId] --eab-hmac-key [账户b64MacKey] |
三、签发证书
因为我是偶尔使用,所以更倾向于直接用DNS手动模式进行签发,首先执行--issue
进行签发它会返回错误信息告诉你没有正确添加DNS记录。从2023年开始,新版的acme默认使用ec-256
参数签发ECC证书,若CA不支持或需要RSA证书请添加--keylength 2048
参数。
1 |
acme.sh --server https://api.buypass.com/acme/directory --issue -d [你的域名] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please |
然后按照他的错误信息手动去DNS添加完,再执行一次--renew
就可以正确签发了。
1 |
acme.sh --server https://api.buypass.com/acme/directory --renew -d [你的域名] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please |
对于ZeroSSL,只需要把前面的--server
换成zerossl
(谷歌CA对应换成google
),并且可以像Let’s Encrypt一样包含多个域名进行签发,例如下面这样:
1 |
acme.sh --server zerossl --issue -d [你的域名1] -d [你的域名2] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please |
手动进行file验证则把包括--dns
后的内容全部换为-w [验证文件目录]
即可,比如下面这样。手动把验证文件复制到你网站目录下,然后和dns方式一样--renew
一次更新验证就可以了。
1 |
acme.sh --server zerossl --issue -d [你的域名1] -d [你的域名2] -w [验证文件目录] |
四、部署证书
签发后的证书在你当前用户文件夹的.acme.sh
里面,其中fullchain.cer
是你的完整证书,*.key
就是你的密钥文件。之后续签这个证书依然可以使用上面的--renew
指令,在手动添加记录后再进行--renew
即可。
有一点要注意,一键安装后的acme.sh
并不会作为系统指令链接到脚本,你可以选择自己ln -s
到/usr/bin
或者自己进入.acme.sh
的目录执行这个脚本,效果是完全一样的。
*记录文章,转载无需注明出处
刚刚续上 Let‘s Encrypt 的证书,一不留神,就过期了。