SSL 的重要性无需多说,但是我身为一个懒狗肯定不想那么麻烦,而在 Linux 系统中可以使用 certbot 直接签发 SSL 证书,但是前提是你要有一个公网地址,不然就需要去 DNS 添加对应的 TXT 解析,很明显,这不符合我的作风,所以我需要使用一个 jio 本用来自动帮我一键签发 SSL 证书并且自动续签,而在 GitHub 里,就有 acme.sh 这个符合条件的仓库。
这篇文章就直接简单粗暴讲述如何使用 acme.sh 为自己签发年轻人的第一个SSL证书。
1.安装
acme.sh 官方提供了安装脚本供我们一键安装
curl https://get.acme.sh | sh
如果你是一个不相信任何脚本,想要自己安装的 dalao,你也可以直接前往 GitHub仓库 拉一份
git clone https://github.com/acmesh-official/acme.sh.git
2.初始化
安装完 acme.sh 后,系统会在你安装时所用的用户的目录下新建 .acme.sh 文件夹
cd ~/.acme.sh/
vi acme.sh.env
这时候我们可以编辑 acme.sh.env 来添加自己的 API Key (我用 Cloudflare Global API Key 用于摆烂,但是正常情况下请自己创建一个可以修改 DNS 的 API 令牌,doc 在这里)
往文件中添加以下参数,如果不是 Cloudflare 的用户可以参考这里的文档。
export CF_Token="1145141919810"
export CF_Email="[email protected]"
添加完成后,我们需要读取下
source ./acme.sh.env
source ~/.bashrc
添加完成后,我们可以更换证书的 CA (我个人喜欢使用 Lets encrypt,当然你也可以换成文档表格中的其他 CA)
acme.sh --set-default-ca --server letsencrypt
此时,你已经初始化完成了 acme.sh,现在就能去签 SSL 证书了
3.签发
签发 SSL 证书,你只需要输入这串命令就能签发并且自动续签证书
acme.sh --issue --dns dns_cf -d example.com -d *.example.com
想自选加密方法,可以在原有的命令后加 -k 参数
可以使用 RSA2048, RSA3072, RSA4096, RSA8192 ec-256, ec-384, ec-521.
acme.sh --issue --dns dns_cf -d example.com -d *.example.com -k 8192 #RSA8192
acme.sh --issue --dns dns_cf -d example.com -d *.example.com -k ec-521 #ec-521
等待一段时间后,你就能在 ~/.acme.sh/ 中看到包含自己证书的文件夹