acme.sh 申请证书笔记

2024 年 9 月 27 日 星期五(已编辑)
/
57
这篇文章上次修改于 2024 年 10 月 24 日 星期四,可能部分内容已经不适用,如有疑问可询问作者。

acme.sh 申请证书笔记

写在开头

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

安装并设置

安装acme.sh

curl https://get.acme.sh | sh -s [email protected]

设置alias以便快速启动

echo "alias acme.sh='~/.acme.sh/acme.sh'" >> ~/.bashrc
source ~/.bashrc

测试是否安装成功

acme.sh --version

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

设置默认申请邮箱

acme.sh --register-account -m [email protected]

请将 [email protected] 替换为你要设置的邮箱地址,设置完成后,后续的证书申请都会默认使用该邮箱。

选择申请证书的机构

根据官方文档,目前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,自动续签且支持多域名&泛域名,一次申请一劳永逸。 #### 证书机构切换 bash 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。 填入下列代码中,终端运行。 bash 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选项即可。 bash acme.sh --issue --dns dns_cf -d example.com --server zerossl

安装证书

根据自己网站服务器版本选择相应的代码安装,以下以Apache为例: bash 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申请配置证书的全过程,附最终效果参考。

最终效果

最终效果

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...