目录
前言
Acme.sh和CertBot 都是常用于自动化申请SSL证书的工具,当然,也可以用来手动申请。
我个人更经常需要手动部署,所以本文还是以手动申请ZeroSSL的SSL证书为例,当然,使用的是Acme.sh。
一般来说在Linux环境下运行比较好,操作简单快捷。
其官网是 https://github.com/acmesh-official/acme.sh
ACME支持度
ACME支持很多常见的SSL证书品牌。
包括但不限于 LE(Let's Encrypt)、ZeroSSL 、BP(Buypass)、Google等。
本来我是打算用来测试GoogleSSL的,结果2天了还没给我批权限,群友说可能谷歌快结束内测了,不批了,早知道不偷懒了。
可参考这些文档:
https://github.com/acmesh-official/acme.sh/wiki/BuyPass.com-CA
https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL
https://github.com/acmesh-official/acme.sh/wiki/CA
CA | MaxLifetime | ECC | Domain Count | Wildcard | IPv4 | IPv6 | NotAfter |
---|---|---|---|---|---|---|---|
Let's Encrypt | 90 | Yes | 100 | Yes | No | No | No |
ZeroSSL | 90 | Yes | 100 | Yes | No | No | Yes |
90 | Yes | 100 | Yes | No | No | Yes | |
Buypass | 180 | Yes | 5 | Paid | No | No | No |
SSL.com | 90 | Yes | 2 | Paid | No | No | No |
HiCA | 180 | Paid | 10 (1 if Wildcard) | Yes | Yes | Yes | No |
ZeroSSL证书
ZeroSSL的官网是 https://zerossl.com/
官网也有提供一些服务,但是对免费用户不怎么友好(大部分功能没有)
但是ACME下可以免费使用主要功能(反而在官网浏览器申请要钱,真智商税) 可阅读 https://zerossl.com/features/acme/
需要注意的是,他家自营的SSL业务,并不算特别老牌。
在ACME工具可实现和上文一致的免费、多域名、多通匹符(也叫通配符) SSL证书。
同时优势还有不需要额外注册,填一个邮箱即可,证书默认是AT国(如果是腾讯云、51SSL等方式申请TA证书那肯定是有实名马脚的)
OCSP地址是 http://zerossl.ocsp.sectigo.com 用的的CloudFlare的泛播双IP,只能说很普通,中国大陆CF出现异常也很正常。
安装
相当于浏览器生成,工具脚本申请证书在这方面就有一丁点上手门槛
curl https://get.acme.sh | sh
然后就自动安装了
默认目录是 /root/.acme.sh/
cd /root/.acme.sh/
然后就安装完成了
如果你要用Zero SSL,最好先配置注册一下,免得出现如图所示的错误
命令参考是
acme.sh --set-default-ca --server zerossl
acme.sh --register-account -m [email protected]
手动申请
网上自动的方法不少(指的是自动续订、DNSAPI申请),但是手动申请的倒是不是很清楚,所以最好还是看官方文档。
https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode
如下文命令所示,依次填写你需要的域名,默认第一个是主域名(会生成一个文件夹),记得换域名啊
acme.sh --issue -d 'google.com' -d '*.google.com' -d 'baidu.com' -d '*.baidu.com' --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
当然去掉引号也是欧克的
acme.sh --issue -d google.com -d *.google.com -d baidu.com -d *.baidu.com --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
一般来说去掉末尾的P话也没啥问题
acme.sh --issue -d google.com -d *.google.com -d baidu.com -d *.baidu.com --dns
如果有BUG/报错也可以考虑在DNS后加个dns-01
acme.sh --issue -d google.com -d *.google.com -d baidu.com -d *.baidu.com --dns dns-01
运行上述任意命令后即可如图所示
这里就告诉你需要验证的域名和txt变量了,每个域名项目都需要设置一次txt解析
比如华为云是这样,记得要能同时响应两个TXT(若有),而不是随机一个TXT
如果你配置了多个CNAME,且值不等,比如我之前忘记删除上一次的了,就会如图所示
然后就失败了,所以一定要检查一下有没有问题,比如冲突覆盖,不然浪费不少时间
然后你看到ACME叫你用Renew,记得别傻乎乎的直接加,不然就会这样
正确的命令是
acme.sh --renew -d 'google.com' -d '*.google.com' -d 'baidu.com' -d '*.baidu.com' \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
当然,也可以和上面一样的简化,比如
acme.sh --renew -d google.com -d *.google.com -d baidu.com -d *.baidu.com
(如果报错请用带后缀的)
acme.sh --renew -d google.com -d *.google.com -d baidu.com -d *.baidu.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
然后正常的输出就如图所示
然后去本地的文件找一下要的东西即可
默认是在主域名的文件夹里面
把第一个cer和第四个csr连起来就是SSL要的PEM了,当然,这个你也可以用Fullchain.cer的那个,这两个都能用
然后密钥自然就是第五个key。
然后丢进去用就行了
Comments NOTHING