74 lines
1.9 KiB
Bash
74 lines
1.9 KiB
Bash
#!/bin/bash
|
||
|
||
# 定义用户名和密码
|
||
USERNAME="****"
|
||
PASSWORD="****"
|
||
|
||
# 安全入口 EntranceCode(Base64 )
|
||
ENTRANCE_CODE="******"
|
||
|
||
# 1Panel API 地址
|
||
LOGIN_URL="http://*******/api/v1/auth/login"
|
||
UPLOAD_URL="http://********/api/v1/websites/ssl/upload"
|
||
|
||
# 定义证书相关信息
|
||
PRIVATE_KEY_PATH="/data2/SSL_SAVE/ovofish/privkey.pem"
|
||
CERTIFICATE_PATH="/data2/SSL_SAVE/ovofish/fullchain.pem"
|
||
SSL_ID=3
|
||
DESCRIPTION="sync from certd:tx4"
|
||
|
||
# 构建登录请求的 JSON 数据
|
||
LOGIN_DATA=$(cat <<EOF
|
||
{
|
||
"name": "$USERNAME",
|
||
"password": "$PASSWORD",
|
||
"language":"zh",
|
||
"authMethod": "jwt"
|
||
}
|
||
EOF
|
||
)
|
||
# 使用 curl 发送登录请求
|
||
RESPONSE=$(curl -s -X POST "$LOGIN_URL" \
|
||
-H "Content-Type: application/json" \
|
||
-H "EntranceCode: $ENTRANCE_CODE" \
|
||
-d "$LOGIN_DATA")
|
||
# 解析返回的 token
|
||
TOKEN=$(echo $RESPONSE | grep -Po '(?<="token":")[^"]*')
|
||
|
||
# 检查是否登录成功
|
||
if [ -n "$TOKEN" ]; then
|
||
echo "登录成功,token: $TOKEN"
|
||
|
||
# 读取私钥和证书内容
|
||
PRIVATE_KEY_CONTENT=$(cat "$PRIVATE_KEY_PATH" | awk '{printf "%s\\n", $0}' | sed 's/\\n$//')
|
||
CERTIFICATE_CONTENT=$(cat "$CERTIFICATE_PATH" | awk '{printf "%s\\n", $0}' | sed 's/\\n$//')
|
||
printf "私钥内容: $PRIVATE_KEY_CONTENT"
|
||
printf "证书内容: $CERTIFICATE_CONTENT"
|
||
# 构建上传证书的请求数据
|
||
UPLOAD_DATA=$(cat <<EOF
|
||
{
|
||
"privateKey": "$PRIVATE_KEY_CONTENT",
|
||
"certificate": "$CERTIFICATE_CONTENT",
|
||
"privateKeyPath": "",
|
||
"certificatePath": "",
|
||
"type": "paste",
|
||
"sslID": $SSL_ID,
|
||
"description": "$DESCRIPTION"
|
||
}
|
||
EOF
|
||
)
|
||
|
||
# 发送证书上传请求
|
||
UPLOAD_RESPONSE=$(curl -s -X POST "$UPLOAD_URL" \
|
||
-H "PanelAuthorization: $TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d "$UPLOAD_DATA")
|
||
|
||
# 输出上传结果
|
||
echo "$UPLOAD_DATA"
|
||
echo "证书上传响应: $UPLOAD_RESPONSE"
|
||
else
|
||
echo "登录失败,请检查用户名或密码"
|
||
echo "失败响应: $RESPONSE"
|
||
fi
|