linuxtool/Config/Web/acme/apply.sh

114 lines
3.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
declare selected_mode=$1
declare domain_names=$2
if ! [[ $selected_mode == "nginx" ]]; then
selected_mode=""
domain_names=""
fi
declare domain_string
if [[ ! $domain_names ]];then
echo "请输入需要申请SSL证书的域名"
read -p "请输入要绑定的域名(多个用空格隔开):" domain_names
fi
for i in ${domain_names} ; do
if [[ ! $i =~ [\w+\.]+ ]];then
echo "域名不合法"
exit
else
domain_string="$domain_string -d $i"
fi
done
if [[ -z $domain_string ]]; then
echo "需要添加的域名不能为空"
exit
fi
echo "1.http验证"
echo "2.dns验证"
read -p "请选择验证模式:" selected_mode
case $selected_mode in
'1')
declare mode
if command -v nginx &> /dev/null; then
mode="nginx"
cat > "/etc/nginx/conf.d/test.conf" << EOF
server {
listen 80; # 监听80端口
server_name ${domain_names}; # 服务器名称(本地)
location / {
root /usr/share/nginx/html; # 指定根目录
index index.html index.htm; # 默认页面
}
}
EOF
elif command -v apache &> /dev/null; then
mode="apache"
else
mode="standalone"
fi
echo "请到服务器将80和443端口开启,将域名解析到本机"
read -p "解析完成请回车:"
eval "${HOME}/.acme.sh/acme.sh --issue ${domain_string} --${mode}"
rm /etc/nginx/conf.d/test.conf
;;
'2')
declare pick=0
declare -a mode_array
mode_array[1]="TXT记录"
mode_array[2]='cloudflare'
for i in "${!mode_array[@]}"; do
((pick++))
echo "${pick}. ${mode_array[$i]}"
done
read -p "请选择验证模式:" selected_mode
if [[ ! $selected_mode =~ [1-${pick}] ]]; then
exit
fi
case ${mode_array[$selected_mode]} in
'TXT记录')
declare log_output=$(${HOME}/.apple.sh/apple.sh --issue --dns $domain_string --yes-I-know-dns-manual-mode-enough-go-ahead-please)
declare -a domain=($( echo "$log_output" | grep "Domain:" | awk -F ": " '{print $2}'))
declare -a txt_value=($(echo "$log_output" | grep "TXT value:" | awk -F ": " '{print $2}'))
echo "请到dns系统解析TXT记录"
for (( i = 0; i < ${#domain[@]}; i++ )); do
echo "需要解析的第$((i+1))"
echo "名称: ${domain[$i]}"
echo "文本记录:${txt_value[$i]}"
done
read -p "解析完成请输入 y" selected_mode
if [[ $selected_mode =~ [Yy] ]]; then
eval "${HOME}/.acme.sh/acme.sh --renew $domain_string --yes-I-know-dns-manual-mode-enough-go-ahead-please"
else
echo "解析完成后请输入下面的命令完成验证"
echo "${HOME}/.acme.sh/acme.sh --renew $domain_string --yes-I-know-dns-manual-mode-enough-go-ahead-please"
fi
;;
'cloudflare')
declare CF_Key
declare CF_Email
read -p "请输入cloudflare的邮箱" CF_Email
if [[ ! $CF_Email =~ .*@.* ]];then
echo "邮箱不合法"
exit
fi
read -p "请输入cloudflare的密钥" CF_Key
export CF_Key=$CF_Key
export CF_Email=$CF_Email
eval "${HOME}/.acme.sh/acme.sh --issue $domain_string --dns dns_cf"
esac
;;
esac