Files
tuic_docker/bin/tls.sh
T
Olia Lisa 900378b8ec update
2026-05-23 10:13:28 +08:00

91 lines
2.7 KiB
Bash

#!/bin/bash
# 生成自签名证书
create_self_tls_file() {
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local KEY_DIR="$SCRIPT_DIR/../tls/self-tls" # 自签tls证书文件夹
# 创建存放证书的目录
mkdir -p "$KEY_DIR"
# 生成自签名证书文件
local DOMAIN="${1:-bing.com}" # 域名,默认为bing.com
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \
-keyout "$KEY_DIR/server.key" \
-out "$KEY_DIR/server.crt" \
-subj "/CN=$DOMAIN" \
-days 36500
}
update_self_tls(){
local CONFIG_FILE="${1}"
local DOMAIN="${2}" # 域名
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
# 生成自签名证书, 设置域名
create_self_tls_file "$DOMAIN"
sed -i "s/你的域名/$DOMAIN/g" "$CONFIG_FILE"
}
update_acme_tls(){
local CONFIG_FILE="${1}"
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
# 获取邮箱
local USER_EMAIL
read -p "请输入你的邮箱: " USER_EMAIL
while [[ -z "$USER_EMAIL" ]]; do
echo "[Error] 邮箱不能为空"
read -p "请输入你的邮箱: " USER_EMAIL
done
# 获取域名
local USER_DOMAIN
read -p "请输入你的域名 (例如: example.com): " USER_DOMAIN
while [[ -z "$USER_DOMAIN" ]]; do
echo "[Error] 域名不能为空"
read -p "请输入你的域名: " USER_DOMAIN
done
# 获取 Cloudflare API Token
local CLOUDFLARE_TOKEN
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
while [[ -z "$CLOUDFLARE_TOKEN" ]]; do
echo "[Error] Cloudflare API Token 不能为空"
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
done
sed -i "s/你的邮箱/$USER_EMAIL/g" "$CONFIG_FILE"
sed -i "s/你的域名/$USER_DOMAIN/g" "$CONFIG_FILE"
sed -i "s/你的Cloudflare_API_Token/$CLOUDFLARE_TOKEN/g" "$CONFIG_FILE"
}
# 修改ACME域名
update_acme_domain(){
local CONFIG_FILE="${1}" # 配置文件
local DOMAIN="${2}" # 域名
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.acme.domain[0]" "$DOMAIN"
}
update_server_name(){
local CONFIG_FILE="${1}" # 配置文件
local DOMAIN="${2}" # 域名
if [[ -z "$CONFIG_FILE" ]]; then
echo "[Error] config_file配置文件路径 不能为空"
return 1
fi
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.server_name" "$DOMAIN"
}