由于 Godaddy 停止了免费的支持ACME SSL 证书签发(DNS 模式),
不得不改用 DNS Alias 模式, 让阿里云 为Godaddy 管理的域名,代理合作签发SSL证书
默认的机构,ZEROSSL,一个初创企业,早已超负荷运转,多数时间已经无法正常签发了。改用Google的证书机构,相对门槛较高,需要有Google帐户,而且国内访问受限,所以签发都一直顺畅。
#!/bin/bash
#
# Godaddy Domain:
DOMAIN=zhenglei.net
DNSAPI=dns_gd
# Aliyun Domain as Proxy:
DOMAIN_PROXY=778065.xyz
DNSAPI_PROXY=dns_ali
# Setup CNAME record mapping of _acme-challenge between ${DOMAIN} and ${DOMAIN_PROXY}
# _acme-challenge.zhenglei.net CNAME==> _acme-challenge.778065.xyz
# _acme-challenge.blog.zhenglei.net CNAME==> _acme-challenge.778065.xyz
# ...
# nslookup -type=CNAME _acme-challenge.zhenglei.net
# nslookup -type=CNAME _acme-challenge.blog.zhenglei.net
# Aliyun key & secret to generate acme cert
# dnsapi=dns_ali
Ali_Key="Your Aliyun Key"
Ali_Secret="Your Aliyun Secret"
export Ali_Key=${Ali_Key}
export Ali_Secret=${Ali_Secret}
# Godaddy key & secret to generate acme cert
# dnsapi=dns_gd
GD_Key="Your Godaddy Key"
GD_Secret="Your Godaddy Secret"
#
# Using alias dns mode of acme.sh
M=" --challenge-alias ${DOMAIN_PROXY} "
N=" --challenge-alias no "
#
#
# IP PROTOCOL
IP=--listen-v6
#
#
#
DNSSLEEP=40
# Init
source /root/env.sh
ACME_SH=/root/.acme.sh/acme.sh
#
function dsub_m () {
local SUB=$1
if [ ! "A${SUB}B" = "AB" ]; then
SUB+="."
fi
local DSUB=" -d ${SUB}${DOMAIN} --challenge-alias ${SUB}${DOMAIN_PROXY} "
echo "${DSUB}"
}
#
function dsub_n () {
local SUB=$1
if [ ! "A${SUB}B" = "AB" ]; then
SUB+="."
fi
SUB+="${DOMAIN_PROXY}"
local DSUB=" -d ${SUB} --challenge-alias no "
echo "${DSUB}"
}
#
#
DSUB_N=" $(dsub_n ) "
DSUB_N+=" -d *.${DOMAIN_PROXY}"
DSUB_M=" $(dsub_m ) "
DSUB_M+=" -d *.${DOMAIN}"
#
DSUB_N+=" $(dsub_n blog) "
DSUB_M+=" $(dsub_m blog) "
DSUB_M+=" $(dsub_m blog1) "
DSUB_M+=" $(dsub_m blog2) "
#
DSUB_N+=" $(dsub_n gallery) "
DSUB_M+=" $(dsub_m gallery) "
DSUB_M+=" $(dsub_m gallery1) "
DSUB_M+=" $(dsub_m gallery2) "
#
DSUB_N+=" $(dsub_n music) "
DSUB_M+=" $(dsub_m music) "
DSUB_M+=" $(dsub_m music1) "
DSUB_M+=" $(dsub_m music2) "
#
DSUB_N+=" $(dsub_n mpd) "
DSUB_M+=" $(dsub_m mpd) "
DSUB_N+=" $(dsub_n mympd) "
DSUB_M+=" $(dsub_m mympd) "
DSUB_N+=" $(dsub_n stream) "
DSUB_M+=" $(dsub_m stream) "
#
DSUB_N+=" $(dsub_n video) "
DSUB_M+=" $(dsub_m video) "
#
#
P=""
P+=" --dns ${DNSAPI_PROXY} "
P+=" --dnssleep ${DNSSLEEP} "
P+=" -k ec-384 "
P+=" --force "
# P+=" --debug "
# P+=" --log "
# Issue:
echo "${ACME_SH} --issue ${P} ${DSUB_M} ${DSUB_N}"
${ACME_SH} --issue ${P} ${DSUB_M} ${DSUB_N}
#
# Install
INST_PATH=/opt/local/cert/acme_zhenglei.net
INST_CER=${INST_PATH}/fullchain.cer
INST_KEY=${INST_PATH}/zhenglei.net.key
OPENRESTY=/opt/local/etc/init.d/openresty
${ACME_SH} --install-cert -d ${DOMAIN} \
--key-file ${INST_KEY} \
--fullchain-file ${INST_CER} \
--reloadcmd "${OPENRESTY} stop ; ${OPENRESTY} start"
https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode