发布时间: 更新时间:

Let’s Encrypt 是一个免费的,自动化的,开放的证书颁发机构(CA),为公众的利益而运行。 它是一项由 Internet Security Research Group(ISRG)提供的服务。

acme.sh 则是实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。

  • Let’s Encrypt 速率限制
    • 每个注册网域(Registered Domain) 的凭证颁发数量,限制为每周50 张
    • 更新凭证受到重复凭证限制,一个星期内仅能颁发5 张重复的凭证。
    • 网域验证失败限制,对于每个帐号每域名每小时5 次的限制。
    • 每个IP 位置每3 个小时最多能建立10 个帐号。

如果你达到速率限制,你只能等待一个星期直到速率限制结束。

acme申请证书

安装 acme.sh

curl  https://get.acme.sh | sh
sudo apt install socat   # 安装socat

选择默认 CA

Zerossl

从 acme.sh v 3.0.0 开始,acme.sh 使用 Zerossl 作为默认 ca,您必须先注册帐户(一次),然后才能颁发新证书。

~/.acme.sh/acme.sh –register-account -m [email protected]

Let’s Encrypt

如果需要更换Let’s Encrypt可以使用如下命令:

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

通过 http 方式申请证书

Webroot模式

这种方式需要你的服务器上面已经部署了网站环境。Acme 自动在你的网站根目录下放置一个文件,来验证你的域名所有权,完成验证. 然后就可以生成证书了.

# 生成 RSA 证书:
~/.acme.sh/acme.sh --issue -d example.com -w /var/www/_letsencrypt/
# 生成 ECC 证书:
~/.acme.sh/acme.sh --issue -d example.com -w /var/www/_letsencrypt/ --keylength ec-256

/var/www/_letsencrypt/ 为 example.com 站点下的 /.well-known/acme-challenge/ 证书请求目录。

80 端口空闲的证书申请方式

~/.acme.sh/acme.sh  --issue -d example.com   --standalone

安装证书到指定文件夹

# 把密钥和证书安装到 /root 目录,并改名为 private.key 和 cert.crt。
~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/cert/private.key --fullchain-file /root/cert/cert.crtchmod -R 755 /root/cert

更新(后续操作)

更新证书

手动更新

~/.acme.sh/acme.sh --renew -d example.com --force

自动更新

安装 acme.sh 时会自动创建一个 cronjob,每天定期检查所有证书,如果证书需要更新会自动更新证书。 通过 crontab -l 查看 crontab 任务:

46 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

更新 Acme 脚本

升级 Acme.sh 到最新版本

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

如果你不想手动升级, 可以开启自动升级:

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

DNS 申请证书(通常只支持付费域名)

几个 CA 的简单对比

功能LEBuypassZeroSSLSSL.comGoogle Public CA
有效期90 天180 天90 天90 天90 天
多域名支持支持,最多 5 个支持收费支持支持
泛域名支持不支持支持收费支持支持
Rate Limit收费无未知
GUI 管理
ECC 证书链未知
客户支持社区收费收费收费收费

cloudflare

使用全局 API 密钥,您需要登录您的 Cloudflare 帐户以获取您的API 密钥

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"

颁发证书:

./acme.sh --issue --dns dns_cf -d example.com -d www.example.com

阿里云 DNS 申请方式

export Ali_Key="abcd"
export Ali_Secret="xxxxxxxxxx"
# RSA 证书
acme.sh --issue --dns dns_ali -d example.com -d *.example.com
# ECC 证书
acme.sh --issue --dns dns_ali -d example.com -d *.example.com --keylength ec-256

Ali_Key 和 Ali_Secret 需要从阿里云RAM访问控制中获取。

DNSPod 申请方式

export DP_Id="1234"
export DP_Key="xxxxxxxxxxx"
acme.sh --issue --dns dns_dp -d example.com -d www.example.com

文档

如何颁发证书

使用 DNS API

选项和参数

Licensed under CC BY-NC-SA 4.0