X

使用 acme.sh 來產生 HTTPS CA 憑證

Let's encrypt 的 certbot 常常會遇到更新失敗,然後需要重新產生的流程

使用 acme.sh + api 都可以自己去更新,比較省事~~

使用 acme.sh 來產生 HTTPS CA 憑證

ACME.sh 的文件

ACME.sh 安裝

  1. sudo apt install socat git
  2. sudo su - # 先使用 root 來操作
  3. wget -O - https://get.acme.sh | sh -s email=my@example.com # or $ curl https://get.acme.sh | sh -s email=my@example.com
    • 自動新增下述:
      • /root/.acme.sh
      • /root/.acme.sh/acme.sh
      • /root/.bashrc # 最下面被加入此行
        •  . "/root/.acme.sh/acme.sh.env"
      • crontab -u root -l # 可以看到被加入此行
        • 36 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
  4. Cloudflare DNS 管理下方 (取得 Cloudflare API token)
    1. 取得您的 API Token
    2. 找到Global API Key # 找到 key 即可,Email 是 Cloudflare 登入帳號
    3. vim ~/.bashrc # 在 36 0 * * * "/root/.acme.sh"/acme.sh 上面加上
      • export CF_Key="Your_CloudFlare_API_Key"
      • export CF_Email="Your_CloudFlare_Account@example.com"
    4.  source ~/.bashrc
  5. 產生憑證 (使用 DNS 挑其一即可)
    • 範例:單一 Domain:acme.sh --issue -d example.com
    • 範例:多重 Domain:acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
    • 實際操作使用:
      • acme.sh --issue --dns dns_cf -d example.com -d www.example.com -d cp.example.com
      • acme.sh --issue --dns dns_cf -d example.com -d *.example.com
      • acme.sh --issue --dns dns_cf --server letsencrypt -d example.com -d *.example.com # 使用 letsencrypt
      • acme.sh --issue --dns dns_cf --server letsencrypt -d example.com -d *.example.com -k 4096 # RSA 金鑰長度可用:2048, 3072, 4096, 8192
      • acme.sh --issue --dns dns_cf --server letsencrypt -d example.com -d *.example.com -k ec-384 # ECC/ECDSA 金鑰長度可用:ec-256, ec-384, ec-521
    • 更多產生憑證的方式:
      • Apache:
        • acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
      • Nginx:
        • acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
      • DNS Mode:
        • acme.sh --issue --dns dns_cf -d example.com -d www.example.com -d cp.example.com
      • Wildcard:
        • acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
      • 預設產生的憑證:ZeroSSL.com CA(default),若想要改成 Let's Encrypt
        • acme.sh --set-default-ca --server letsencrypt # 若想將 default 設定到 letsencrypt 的話
  6. 自動產生憑證到 Nginx or Apache
    • Nginx
      • mkdir /etc/nginx/ssl.crt
      • acme.sh --install-cert -d example.com \
        • --key-file /etc/nginx/ssl.crt/example.com.key.pem \
        • --fullchain-file /etc/nginx/ssl.crt/example.com.fullchain.pem \
        • --reloadcmd "service nginx reload"
    • Apache
      • mkdir /etc/apache2/ssl.crt
      • acme.sh --install-cert -d example.com \
        • --cert-file /etc/apache2/ssl.crt/example.com.cert.pem \
        • --key-file /etc/apache2/ssl.crt/example.com.key.pem \
        • --ca-file /etc/apache2/ssl.crt/example.com.ca.pem \
        • --fullchain-file /etc/apache2/ssl.crt/example.com.fullchain.pem \
        • --reloadcmd "service apache2 reload"
  7. 更新憑證(renew)
    • acme.sh --renew -d example.com --force
  8. 更多功能:
    • 讓 acme.sh 自動升級
      • acme.sh --upgrade --auto-upgrade
    • 移除 Domain 憑證:
      • acme.sh --remove -d example.com

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post