文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

缘由

最近网站证书到期了,由于以前一直使用的是 来此加密,但是不知道最近是由于加入了会员系统还是使用的用户多了,总之就是申请证书的速度变得非常非常慢,并且还得去服务商那里更改 DNS 的记录,每次都要这样折腾一番,太麻烦了,于是就去找了找,发现了这个脚本:acme.sh,十分好用,并且申请的速度十分快,而且支持泛域名,于是特此记录一下。

安装并配置

INFO

事先说明,我这里使用的是 Windows 系统,不过按照官方文档来说,使用 Linux 会更简单

拉取仓库

拉取仓库前,请确保你已经正确的安装了 Git 以及 curl,可以通过以下命令验证安装:

bash
git -v
curl --V

然后执行以下命令拉取仓库:

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

拉取过程可能会因为网络问题出错,可以多试几次。

拉取成功之后,进入仓库目录:

bash
cd acme.sh

然后执行以下命令安装:

WARNING

这里需要注意,如果你使用的是 Windows 系统,那么你需要使用 Git Bash 来执行命令,而不是 CmdPowerShell

bash
./acme.sh --install

出现 OK 之后,即代表安装完成( 安装过程可能会出现一些错误,一般情况下,忽略即可 )

签发证书

准备步骤完成后,就可以开始签发证书了。

配置环境变量

使用 acme.sh 的很大一个原因是因为它支持使用大多数服务商的 API 接口来实现自动添加 txt 记录完成验证。

我这里使用的是腾讯云的 DNSPod,并且文档中还说明了,acme.sh 目前还支持 cloudflare, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。

这里我们只需要去 DNSPod控制台 中申请一个 DNSPod Token

新建 DNSPod Token新建 DNSPod Token

获取到 Token 之后,就可以在 acme.sh 的配置文件中配置了:

bash
export DP_Id="你的 DNSPod 用户 ID"
export DP_Key="你的 DNSPod API Token"

更多 API 用法可以去查看 官方文档,此处不再赘述。

获取证书

到了最简单的一步,直接使用一行命令即可获得证书:

请将 yourdomain.com 替换成你要添加的域名

bash
./acme.sh --issue --dns dns_dp -d "yourdomain.com" -d "*.yourdomain.com"

来详细说明一下这个命令干了什么:

  • --issue 是告诉 acme.sh 你想要发行(也就是获取)一个新的证书。
  • --dns dns_dp 表示你想要使用 DNS 的方式来验证域名所有权,并且指定了使用 DNSPod 提供的 DNS API。
  • -d yourdomain.com 表示你想要为该域名获取证书。
  • -d *.yourdomain.com 表示你还想要为该域名的所有子域名(泛域名)获取证书。

以上步骤全部完成后,acme.sh 就会输出你的证书的存放位置,比如:

证书位置证书位置

通常情况下,fullchain.cer 文件用作证书文件,而 yourdomain.com.key 文件用作私钥文件

生成 RSA 算法证书

这算是一个可选项,主要是我在将证书的私钥文件填入又拍云时,出现了错误信息,而后得知又拍云不支持 ECC 算法的私钥。

于是需要更改一下上面的生成命令,默认情况下,acme.sh 会生成使用 ECC 密钥的证书,你可以通过指定 --keylength 选项来设定密钥长度,让其生成 RSA 算法的证书,例如使用 2048 位或 4096 位:

bash
./acme.sh --issue --dns dns_dp -d "yourdomain.com" -d "*.yourdomain.com" --keylength 2048
赞赏博主
评论 隐私政策