下面这个脚本阐释了如何使用acme.sh借助配置、部署阿里云API完成RSA、ECC双证书。注意,该RAM账户需要授予“管理云解析”(AliyunDNSFullAccess)的权限
#!/bin/sh
DOMAIN="example.com" # 域名
CERT_FOLDER="/etc/nginx/certs" # 证书存放的目录,结尾不能是"/"字符
export Ali_Key="123456AbCdEfGh1234567890" # 阿里云RAM用户账户
export Ali_Secret="aBcDEfGhHiJkLmNOpQrStUvWxYz234" # 阿里云RAM用户密码
#######################################################################
# 安装acme.sh
# apt install socat # 仅stand alone模式需要
curl https://get.acme.sh | sh
alias acme.sh='/root/.acme.sh/acme.sh'
acme.sh --upgrade --auto-upgrade # 更新acme.sh
acme.sh --set-default-ca --server letsencrypt # 设置默认CA为let's Encrypt
# 申请RSA证书
acme.sh --issue -d ${DOMAIN} -d *.${DOMAIN} --dns dns_ali \
--dnssleep 30 --ocsp --days 30 --keylength 2048
# 申请ECC证书
acme.sh --issue -d ${DOMAIN} -d *.${DOMAIN} --dns dns_ali \
--dnssleep 30 --ocsp --days 30 --keylength ec-256
# 创建证书安装所需要的目录
mkdir ${CERT_FOLDER}
mkdir ${CERT_FOLDER}/rsa
mkdir ${CERT_FOLDER}/ecc
# 安装RSA证书
acme.sh --install-cert -d ${DOMAIN} \
--cert-file ${CERT_FOLDER}/rsa/cert.pem \
--key-file ${CERT_FOLDER}/rsa/key.pem \
--fullchain-file ${CERT_FOLDER}/rsa/fullchain.pem \
--reloadcmd "systemctl restart nginx"
# 安装ECC证书
acme.sh --install-cert -d ${DOMAIN} --ecc \
--cert-file ${CERT_FOLDER}/ecc/cert.pem \
--key-file ${CERT_FOLDER}/ecc/key.pem \
--fullchain-file ${CERT_FOLDER}/ecc/fullchain.pem \
--reloadcmd "systemctl restart nginx"
# 手动更新证书
#acme.sh --renew -d example.com --force
#acme.sh --renew -d example.com --force --ecc