现在HTTPS是大势所趋,某些浏览器已经开始强制HTTPS了,HTTP要么打不开,要么提示你不安全,既然如此,我们也要跟上时代的步伐不是吗?

咱就不探讨HTTPS使用的CA证书具体是什么了,只要知道这个东西很贵!(对于普通人或者小公司来说)我们只能另辟蹊径,好在,有那么一家机构叫做Let's Encrypt,这是一家非盈利性质证书颁发机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的传输层安全性协议。听起来就特别牛,有木有?

本文使用Github上一个开源的工具,叫做acme.sh,它实现了acme协议,可以从Let's Encrypt生成免费的证书。

项目在这里:https://github.com/acmesh-official/acme.sh

项目有完整的WiKi,且有中文版,所以我只做一个介绍,和记录一下我常用的命令。

安装acme.sh

curl https://get.acme.sh | sh -s email=my@example.com

默认安装的目录在当前用户主目录下,对于root用户当然就是在/root目录下了。

x> 我在用这条官方给的命令安装总是失败,所以只能手动安装

自动安装失败情况下如何手动安装:

首先克隆一下仓库到本地,然后进入项目根目录,最后使用--install参数进行安装。

git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install

手动配置DNS解析生成泛域名证书

这种方式的好处是,你不需要任何服务器,不需要任何公网IP,只需要DNS的解析记录即可完成验证。坏处是,如果不同时配置Automatic DNS API,使用这种方式acme.sh将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

acme.sh --issue --dns -d *.example.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

执行完上面这条命令之后,会给你一条解析记录,登录你的域名注册商,添加对应的解析,然后运行下一条命令。

acme.sh --renew -d *.example.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

官方介绍可以使用域名商的DNS管理API来实现自动更新,但是我生成的证书并不在本地使用,还是要拷贝一次的,添加一条解析也不用多长时间,所以没有必要自动更新。

最后生成的证书在用户目录下的.acme.sh下,以域名命名的目录里,建议用tar打包一下,然后下载下来,就可以使用了。

使用DNS供应商自动验证域名

以阿里云为例。

export Ali_Key="<key>"
export Ali_Secret="<secret>"

acme.sh --issue --dns dns_ali -d simaek.com -d \*.simaek.com --keylength ec-256
最后修改:2024 年 08 月 14 日
如果觉得我的文章对你有用,请随意赞赏