转载自:acme.sh-实现自动化部署SSL证书 - 腾讯云开发者社区-腾讯云 (tencent.com) 感谢大佬的文章,很详细
其他参考:
最新版泛域名证书申请-阿里云开发者社区 (aliyun.com)
用acme.sh帮你免费且自动更新的HTTPS证书,省时又省力 - 知乎 (zhihu.com)
使用acme.sh和阿里云dns来自动签发ssl证书 - IT折腾记 (haoran.co)

安装acme

  • 安装依赖:apt update && apt install socat -y
  • 一键安装:wget -O - https://get.acme.sh | sh
    设置相应的域名解析方key,需要添加相应的DNS修改权限
    dnspod api
    export DP_Id="123xxx"
    export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

阿里云api

export Ali_Key="xxxxxxxxxxxxxx"
export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Cloudflare api

image.png

export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

注意:必须source ~/.bashrc生效上面导入

开始申请

自动 DNS 模式标准命令:

其中dns_dp为 腾讯云DNSPod.cn 服务商,自行根据官方dnsapi修改.例如:dns_ali为阿里云,dns_cf为CLoudflare.

acme.sh --issue --server letsencrypt --dns dns_ali -d example.com -d www.example.com

示例:

acme.sh --issue --server letsencrypt --dns dns_dp -d blog.baiyz.top

acme.sh 可以同时申请多个域名.例如拥有域名abc.com,123.com,qqq.com,只需要在命令后加上-d 空格 域名即可多域名申请证书会将多个证书合并为一个证书,并存放到以第一个域名命名的文件夹内,证书信息仅显示第一个域名的信息.

示例:

acme.sh --issue --server letsencrypt --dns dns_dp -d abc.com -d *.abc.com -d 123.com -d *.123.com -d qqq.com -d *.qqq.com

安装证书到指定文件夹

acme.sh 还支持自动部署证书到指定目录并重启nginxapache服务,以确保新证书生效.参考如下:

acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt --reloadcmd "service nginx force-reload"

这里的mydomain.com为你要申请证书的域名,key-filefullchain-file后面的路径分别是密钥文件和证书文件的路径。使用该命令仅更改域名则将在root目录下生成密钥文件private.key和证书文件cert.crt,密钥和证书路径则分别为/root/private.key/root/cert.crt--reloadcmd "service nginx force-reload"则是重载nginx。

由于 Let’s Encrypt 的证书有效期为三个月.为避免证书失效 acme.sh 会每60天根据你的历史申请记录和部署记录重新续签证书并部署.