acme.sh配合宝塔自动更新SSL泛域名证书脚本

460次阅读
没有评论

第一步:用命令生成 ssl 泛证书, 第一个一定要 *.Test.com 开头的泛解析,且自动生成到 /home/cert 目录下。

acme.sh --issue --dns dns_cf -d *.xiwaer.com -d xiwaer.com   --cert-home /home/cert

第二步:通过脚本更新到宝塔证书目录,脚本自动判断 xiwaer.com,以及 xxx.xiwaer.com 和 xxx.wb.xiwaer.com 二级和三级域名

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.acme.sh
# 设置证书存放目录
CERT_HOME="/home/cert"
PANEL_CERT_DIR="/www/server/panel/vhost/cert"

# 为每个泛域名定义一个数组,存储需要匹配的域名
declare -A domains
domains["xiwaer.com"]=""
domains["xxx.eu.org"]=""

# 统计证书安装数量
cert_count=0

# 读取每个域名文件夹
for domain in "${!domains[@]}"; do
    # 检查对应的泛域名目录
    if [-d "$PANEL_CERT_DIR/$domain"]; then
        # 如果目录存在,检查和该泛域名相匹配的所有子域名
        for subdomain in $(ls -d $PANEL_CERT_DIR/* | grep $domain); do
            subdomain_name=$(basename $subdomain)
            # 检查子域名是否符合泛域名的模式
            if [[$subdomain_name == *"$domain"]]; then
                # 安装证书
                acme.sh --installcert -d "*.$domain" --cert-home $CERT_HOME --ecc \
                --key-file "$PANEL_CERT_DIR/$subdomain_name/privkey.pem" \
                --fullchain-file "$PANEL_CERT_DIR/$subdomain_name/fullchain.pem"
                echo "Installed certificate for $subdomain_name"
                ((cert_count++))
            fi
        done
    fi
done
echo "$cert_count certificates installed."

正文完
 1
评论(没有评论)
验证码