Acme.sh可用CA机构和申请方法记录

20230603111315.png

安装Acme.sh

curl https://get.acme.sh -s | sh -s

验证安装版本

bash ~/.acme.sh/acme.sh -v
https://github.com/acmesh-official/acme.sh
v3.0.6

更新

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新,因此 acme.sh 也需要经常更新以保持同步。

升级 acme.sh 到最新版:

bash ~/.acme.sh/acme.sh --upgrade

自动更新

bash ~/.acme.sh/acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了

你也可以随时关闭自动更新:

bash ~/.acme.sh/acme.sh --upgrade  --auto-upgrade  0

注册设备

Let’s Encrypt

bash ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt

ZeroSSL

bash ~/.acme.sh/acme.sh --set-default-ca --server zerossl
bash ~/.acme.sh/acme.sh --register-account -m 你的邮箱 --server zerossl

Buypass (支持180天)

bash ~/.acme.sh/acme.sh --set-default-ca --server buypass
bash ~/.acme.sh/acme.sh --server https://api.buypass.com/acme/directory \
        --register-account  --accountemail 你的邮箱

HiCA (申请时需要手动指定参数 -k 2048 才能申请免费的)(支持180天)
官方已关停

bash ~/.acme.sh/acme.sh --set-default-ca --server https://acme.hi.cn/directory
bash ~/.acme.sh/acme.sh --register-account --accountemail \
    你的邮箱 \
    --server http://acme.hi.cn/directory

Google (需要申请谷歌EAB 密钥 ID 和 HMAC)
申请教程移步 获取谷歌的公共证书颁发机构 API

bash ~/.acme.sh/acme.sh --set-default-ca --server google
bash ~/.acme.sh/acme.sh  --register-account  -m  myemail@example.com --server google \
    --eab-kid xxxxxxx \
    --eab-hmac-key xxxxxxx

SSL.com (也需要EAB 密钥 ID 和 HMAC)
https://github.com/acmesh-official/acme.sh/wiki/SSL.com-CA
获取方法:https://www.ssl.com/guide/ssl-tls-certificate-issuance-and-revocation-with-acme/#ftoc-heading-2

这家我用HTTP方式的方式一直申请失败提示CAA解析记录问题,后面用自动DNS方式能申请成功

bash ~/.acme.sh/acme.sh --set-default-ca --server sslcom
bash ~/.acme.sh/acme.sh  --register-account  --server ssl.com  \
              -m  my@example.com   \
             --eab-kid  xxxxxx     --eab-hmac-key  xxxxxxxx

申请方式

手动DNS方式申请

bash ~/.acme.sh/acme.sh --issue --dns --domain 你的域名 --yes-I-know-dns-manual-mode-enough-go-ahead-please

执行后会出现下面信息,到域名解析平台去添加对应的TXT记录

...
[Sat 03 Jun 2023 12:28:09 AM EDT] Add the following TXT record:
[Sat 03 Jun 2023 12:28:09 AM EDT] Domain: '_acme-challenge.你的域名'
[Sat 03 Jun 2023 12:28:09 AM EDT] TXT value: 'rozal8uFwfbtfoLSfRih559CPbNkCUFRGWMVsBhj96E'
...

添加后可以使用本地电脑执行下面这条命令,验证是否生效。

nslookup -qt=txt _acme-challenge.你的域名

生效后执行下面命令申请证书,多个 --renew 参数

bash ~/.acme.sh/acme.sh --issue --dns --domain 你的域名 --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew

自动DNS方式申请

需要 DNS API 移步教程,我用的是cloudflare
https://www1.hi.cn/docs/tutorial-expert/challenge/dns-challenge/dns_cf.sh
https://github.com/acmesh-official/acme.sh/wiki/dnsapi#1-use-cloudflare-domain-api-to-automatically-issue-cert%E3%80%82%F0%9F%98%8E

建议是使用CF_Token
CF_Key需要 Global API Key 权限太高了

export CF_Token="xxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxx"

可以将这些环境变量写 account.conf 文件
vim ~/.acme.sh/account.conf

CF_Token="xxxxxxxxxxxx"
CF_Account_ID="xxxxxxxxxxxxx"
CF_Zone_ID="xxxxxxxxxxxx"

自动DNS申请命令

bash ~/.acme.sh/acme.sh --issue --dns dns_cf --domain 你的域名

同时支持 www 域名

如果你想要证书同时支持www子域名和顶级域名,你需要在你的命令中添加一个额外的--domain参数,比如--domain www.example.com。因此,你应该将你的命令更改为:

bash ~/.acme.sh/acme.sh --issue --dns dns_cf --domain example.com --domain www.example.com

HTTP申请方式

域名需要先解析到服务器IP

--standalone参数是ACME客户端的一个选项,用于在单独的Web服务器上运行ACME验证。它是一种申请Let's Encrypt证书的HTTP验证方式,通过在ACME客户端内部启动一个临时的Web服务器,来提供验证所需的HTTP服务
当使用--standalone参数时,ACME客户端会在申请证书之前启动一个临时的Web服务器,该Web服务器会监听80端口(或通过使用--httpport参数指定的端口)并提供HTTP服务。Let's Encrypt服务器会向该Web服务器发送HTTP验证请求,以验证申请证书的域名所有权

默认使用80端口

bash ~/.acme.sh/acme.sh --issue -d 你的域名 --standalone

自定义端口

bash ~/.acme.sh/acme.sh --issue -d 你的域名 --standalone --httpport 端口

证书安装

创建证书安装目录

mkdir /ssl

安装证书

bash ~/.acme.sh/acme.sh --installcert -d 你的域名 --fullchainpath /ssl/xxx.crt --keypath /ssl/xxx.key

参考文章
https://github.com/acmesh-official/acme.sh/wiki
https://www1.hi.cn/docs/intro
手动使用Acme.sh证书脚本申请SSL证书 | MisakaNo の 小破站

# acme 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:Acme.sh可用CA机构和申请方法记录
地址:https://530503.xyz/articles/2023/06/03/1685770269234.html

评论

取消