Ratodo

夜半观星

我的花园到处是星星的碎片
telegram
github
email
nintendo switch

acme.sh 申请证书笔记

写在开头#

由于一年期免费证书现在已经基本绝迹,最省时省力的方案莫过于 acme.sh 自动部署更新。虽然我的目前大多数服务以及跑在了无服务器系统上,但通过一个自动程序来随时获得有效的网站证书,还是有一定必要性。
若像我一样均采用 Cloudflare 的服务,可以在 Cloudflare 的仪表盘中生成 15 年有效期的自签证书,可通过 Cloudflare 系统的 https 验证,无需部署公共 CA 证书,公共 CA 证书系统会帮助自动申请,目前的提供商是 GTS 和 Sectigo。
以下简单记录下在申请过程中的一些步骤和注意点。
acme.sh Project

安装并设置#

安装 acme.sh#
curl https://get.acme.sh | sh -s email=my@example.com
设置 alias 以便快速启动#
echo "alias acme.sh='~/.acme.sh/acme.sh'" >> ~/.bashrc
source ~/.bashrc
测试是否安装成功#
acme.sh --version

成功返回版本即为安装成功

设置默认申请邮箱#
acme.sh --register-account -m your-email@example.com

请将 your-email@example.com 替换为你要设置的邮箱地址,设置完成后,后续的证书申请都会默认使用该邮箱。

选择申请证书的机构#

根据官方文档,目前 acme 支持五家 SSL 证书发行商,分别是:

  • ZeroSSL.com CA (默认)
    • 支持多域名 & 泛域名,有效期 90 天
    • 上级 CA:Sectigo (USERTrust ECC Certification Authority)
  • Letsencrypt.org CA
    • 支持多域名 & 泛域名,有效期 90 天
    • 上级 CA:ISRG (ISRG Root X1)
  • BuyPass.com CA
    • 支持多域名 (单证书内最多 5 个),有效期 180 天
    • 上级 CA:Buypass (Buypass Class 3 Root CA)
  • SSL.com CA
    • 仅支持单域名,需注册,有效期 90 天
    • 上级 CA:SSL.com (SSL.com Root Certification Authority RSA R2)
  • Google.com Public CA
    • 支持多域名 & 泛域名,有效期 90 天
    • 上级 CA:GTS (GTS Root R4)
      综上建议选择默认的 ZeroSSL/Let’s Encrypt/GTS,自动续签且支持多域名 & 泛域名,一次申请一劳永逸。
证书机构切换#
acme.sh --set-default-ca --server zerossl

其中 —server 后表示要切换到的机构,可选项为:

  • zerossl/letsencrypt/buypass/google/ssl.com

以下申请步骤以 ZeroSSL 为例,使用 Cloudflare DNS API。

配置 Cloudflare DNS API#

获取 API 密钥步骤:
1. 登录到 Cloudflare Dashboard
2. 转到 My Profile
3. 在 API Tokens 下,创建一个带有 DNS 编辑权限的 API 令牌,或使用 Global API Key
填入下列代码中,终端运行。

export CF_Token="你的Cloudflare_API_Token"

同时也支持多家 DNS 服务商,详见Github

申请证书#
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'

申请 examle.com 及 *.example.com 两个域名的证书,可根据需要自行修改,新增域名在后面继续加入 - d 域名即可。

若需指定证书机构,加入 —server 选项即可。

acme.sh --issue --dns dns_cf -d example.com --server zerossl
安装证书#

根据自己网站服务器版本选择相应的代码安装,以下以 Apache 为例:

acme.sh --install-cert -d example.com \
--key-file /path/to/your/domain.key \
--fullchain-file /path/to/your/domain.cer \
--reloadcmd "service apache2 reload"

以上部分的域名及路径请手动修改,路径在上一步申请完成证书后会反馈。

设置定期更新#
acme.sh --renew -d example.com --force

后续即可自动完成证书更新,无需人为干预。

以上,就是 acme.sh 申请配置证书的全过程,附最终效果参考。

acme.1

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。