mirror of
https://github.com/mack-a/v2ray-agent.git
synced 2026-09-02 22:06:36 +00:00
fix(脚本): 修复 DNS API 申请非通配符证书时仍签发根域导致失败的问题
acmeInstallSSL 在用户回答"是否使用 *.xxx 申请通配符证书 [y/n]"
为 n 时,仍然会向 acme.sh 追加 -d ${dnsTLSDomain},相当于同时
申请子域 + 根域两个证书。这导致使用 dpdns.org、is-a.dev 等
Public Suffix 上的子域时,CF / 阿里云 API 因无权操作根域 zone
直接返回 invalid domain,整体签发失败。
修复:仅当用户选择通配符(y)时才追加根域 -d,n 分支只签发用户
输入的子域。cloudflare 与 aliyun 两个分支同步修复,standalone
分支本就只签单域名,不受影响。
复现:
域名: abc.dpdns.org
选择 DNS API -> cloudflare -> 输入 CF Token
是否使用 *.dpdns.org 通配符 [y/n]: n
日志报错: invalid domain _acme-challenge.dpdns.org
This commit is contained in:
+7
-2
@@ -1876,16 +1876,21 @@ selectAcmeInstallSSL() {
|
|||||||
# 安装SSL证书
|
# 安装SSL证书
|
||||||
acmeInstallSSL() {
|
acmeInstallSSL() {
|
||||||
local dnsAPIDomain="${tlsDomain}"
|
local dnsAPIDomain="${tlsDomain}"
|
||||||
|
local dnsAPIExtraDomain="-d ${dnsTLSDomain}"
|
||||||
if [[ "${dnsAPIStatus}" == "y" ]]; then
|
if [[ "${dnsAPIStatus}" == "y" ]]; then
|
||||||
dnsAPIDomain="*.${dnsTLSDomain}"
|
dnsAPIDomain="*.${dnsTLSDomain}"
|
||||||
|
else
|
||||||
|
# 用户选择不使用通配符时,只为自己输入的子域申请证书,
|
||||||
|
# 避免脚本追加根域 -d ${dnsTLSDomain} 导致根域不属于自己(例如 dpdns.org 等公共后缀)时签发失败
|
||||||
|
dnsAPIExtraDomain=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${dnsAPIType}" == "cloudflare" ]]; then
|
if [[ "${dnsAPIType}" == "cloudflare" ]]; then
|
||||||
echoContent green " ---> DNS API 生成证书中"
|
echoContent green " ---> DNS API 生成证书中"
|
||||||
sudo CF_Token="${cfAPIToken}" "$HOME/.acme.sh/acme.sh" --issue -d "${dnsAPIDomain}" -d "${dnsTLSDomain}" --dns dns_cf -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
sudo CF_Token="${cfAPIToken}" "$HOME/.acme.sh/acme.sh" --issue -d "${dnsAPIDomain}" ${dnsAPIExtraDomain} --dns dns_cf -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
||||||
elif [[ "${dnsAPIType}" == "aliyun" ]]; then
|
elif [[ "${dnsAPIType}" == "aliyun" ]]; then
|
||||||
echoContent green " ---> DNS API 生成证书中"
|
echoContent green " ---> DNS API 生成证书中"
|
||||||
sudo Ali_Key="${aliKey}" Ali_Secret="${aliSecret}" "$HOME/.acme.sh/acme.sh" --issue -d "${dnsAPIDomain}" -d "${dnsTLSDomain}" --dns dns_ali -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
sudo Ali_Key="${aliKey}" Ali_Secret="${aliSecret}" "$HOME/.acme.sh/acme.sh" --issue -d "${dnsAPIDomain}" ${dnsAPIExtraDomain} --dns dns_ali -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
||||||
else
|
else
|
||||||
echoContent green " ---> 生成证书中"
|
echoContent green " ---> 生成证书中"
|
||||||
sudo "$HOME/.acme.sh/acme.sh" --issue -d "${tlsDomain}" --standalone -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
sudo "$HOME/.acme.sh/acme.sh" --issue -d "${tlsDomain}" --standalone -k ec-256 --server "${sslType}" ${sslIPv6} 2>&1 | tee -a /etc/v2ray-agent/tls/acme.log >/dev/null
|
||||||
|
|||||||
Reference in New Issue
Block a user