本文发表于 613 天前,其中的信息可能已经事过境迁
文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

缘由 ​

最近网站证书到期了,由于以前一直使用的是 来此加密,但是不知道最近是由于加入了会员系统还是使用的用户多了,总之就是申请证书的速度变得非常非常慢,并且还得去服务商那里更改 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 来执行命令,而不是 Cmd 或 PowerShell

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
赞赏博主
评论 隐私政策