×

acme.sh项目官方Wiki中文说明

申请证书之前你当然需要有一个自己的域名,你可以在各种registar那儿注册,如namenamecheapspaceship等。

你可以通过tld-list来查看市面主流registry的优惠信息。

acme通过dns记录验证或网站验证来获取证书。详细的验证细节可以参考let’s encrypt的说明。

安装acme.sh

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

在使用 acme.sh 时需要使用邮箱地址在对应的 CA 处注册一个账户用于申请证书,如默认的zerossl。你也可以不带-s email=my@example.com,之后再创建。

官方说明中指出安装脚本会做的事情:

把 acme.sh 安装到你的 /home/user 目录或者/root下~/.acme.sh/acme.sh

创建一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

创建账户

官方支持的server简写,使用命令设置默认CA。如:

acme.sh –set-default-ca –server letsencrypt

acme.sh –set-default-ca –server zerossl

创建账户:

acme.sh –register-account -m your-email@example.com

创建的账户资料会保存在~/.acme.sh/acme.sh/ca

如果你想使用 GTS(Google Trust Services)CA:google官方说明

Console中的 IAM和管理 中先创建项目,在网页中使用 cloud shell申请EAB密钥

gcloud publicca external-account-keys create

再在本机acme中使用生成的密钥注册:

acme.sh --register-account -m "EMAIL" --server google  --eab-kid "EAB_KID" --eab-hmac-key "HMAC_KEY"

eab-hmac-key 是比较长的那个,测试和正式环境需要重新生成密钥单独注册,密钥被注册使用后后会失效。

使用dns_api

DNS 验证无需物理托管,无论服务器的物理位置如何,或者是否有多个服务器,只要能控制 DNS 记录,就可以为域名颁发证书。DNS 验证显示了对域名 DNS 记录的控制权,这通常意味着更高级别的认证和安全保障,通配符证书往往需要DNS验证。

你通常可以比较轻松地获取dns提供商的api来配合acme.sh使用,acme.sh已经编写好了许多市面上常用的dns服务商的脚本内置于项目中。

以cloudflare为例:

cloudflare对应的脚本是dns_cf,在命令中添加 --dns dns_cf 使用。

使用前我们去cloudflare获取对应的域名dns修改权限的API令牌。

去往右上角我的个人资料中。

API令牌中创建令牌

权限中选择编辑,在区域资源中添加你需要申请证书的域名,在客户端IP筛选中添加你使用acme.sh 的主机IP地址,增加安全性。

继续以创建令牌

然后cloudflare会自动为你生成API令牌

接下来,我们使用这个API令牌来进行证书申请,在shell中输入并回车,记得替换为你刚申请的API令牌:

export CF_Token="Your_CF_Token"

export命令会生成一个环境变量,使用printenv可以查看所有环境变量

使用过一次的CF_Token会自动存储在~/.acme.sh/acme.sh/account.conf

所以你也可以直接修改~/.acme.sh/acme.sh/account.conf 添加:

SAVED_CF_Token='Your_CF_Token'

最后你可以使用acme.sh申请证书

acme.sh --issue --server google -d *.你的域名 --dns dns_cf --keylength ec-256

修改以下命令,将证书安装到你想要的地方

acme.sh --install-cert -d 你的域名 \
--cert-file "/path/to/你的域名.cer" \
--key-file      "/path/to/你的域名.key"  \
--fullchain-file "/path/to/你的域名_fullchain.cer" \
--reloadcmd     "sudo service nginx force-reload"

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

作者

postmaster@kabe.dev

相关文章

申诉移除outlook黑名单的记录

当你尝试向微软系邮箱服务发送邮件,如hotm...

读出全部

开始发送邮件前的设置

下列这些设置是必须的,参考谷歌对邮件的要求—...

读出全部

poste.io邮箱服务器

强烈建议先看在搭建邮箱服务器之前 poste...

读出全部

安装Docker

官方安装指南 卸载旧版本docker 如果你...

读出全部

自建邮局

写在开始之前 关于Spamhaus 使用po...

读出全部

写在开始自建邮箱之前

创建一个自定义域名后缀的邮箱,这听起来很酷,...

读出全部