Let's Encrypt
ข้อควรรู้ !!!
ก่อนที่จะดำเนินการ Add/Renew Cert. จะต้องทำตามขั้นตอนตั้งค่า Acme ก่อน
Add/Renew
- เพิ่มชื่อโดเมนที่ไฟล์
domain.txtจะอยู่ที่/root/domain.txtโดเมนล่าสุดจะต้องกด ENTER เพื่อเว้นบรรทัด
text
mydomain.com
youdomain.net- สร้างไฟล์ kong-acme.sh
bash
#!/bin/sh
# --------------------------------------------------
# Kong ACME Pingin: Let's Encrypt
# https://docs.konghq.com/hub/kong-inc/acme
# --------------------------------------------------
# Created: 26.05.2023
# Update: 23.07.2024
# --------------------------------------------------
# Let's Encrypt Command
# Update Account email:
# $ certbot update_account --email email@email.com
# --------------------------------------------------
DOMAIN_FILE="./domain.txt"
# Read domain from file
i=1
while read GET_DOMAIN
do
# Skip comment[#]
if [[ "$GET_DOMAIN" != *#* ]]; then
DOMAIN[$i]=$GET_DOMAIN
i=$i+1
fi
# Get File
done < $DOMAIN_FILE
clear
TITLE_MENU="Select Menu[1-3]: "
RETURN_MENU=("Renew SSL" "Check SSL" "Quit")
MENU=("Renew SSL" "Check SSL" "Quit")
PS3=$TITLE_MENU
echo "-------------------------"
echo "| Kong ACME *All Domain |"
echo "| Select Menu |"
echo "-------------------------"
select choose_menu in "${RETURN_MENU[@]}"
do
case $choose_menu in
# --------------------------------------------------
# Renew SSL
# --------------------------------------------------
"Renew SSL")
### Renew certificate
clear
echo ""
echo "### Renew Certificates ###"
echo ""
for (( i=1; i<=${#DOMAIN[@]}; i++ )) ; do
echo "[DOMAIN] ${DOMAIN[i]}"
### Update routes *** Before renew ***
MSG1=$(curl -s --request PATCH \
--url http://localhost:8001/routes/${DOMAIN[i]} \
--data https_redirect_status_code="426" \
--data protocols="http")
MSG1_CODE=$(echo $MSG1 | jq -r .https_redirect_status_code)
MSG1_PROTOCAL=$(echo $MSG1 | jq -r .protocols[])
echo "[BEFORE] set status code: '$MSG1_CODE', set protocol: '$MSG1_PROTOCAL'"
sleep 1
### Create certificate
MSG2=$(curl -s http://localhost:8001/acme -d host=${DOMAIN[i]} | jq -r .message)
echo "[MESSAGE] ${MSG2}"
sleep 1
### Update route *** After renew ***
MSG3=$(curl -s --request PATCH \
--url http://localhost:8001/routes/${DOMAIN[i]} \
--data https_redirect_status_code="302" \
--data protocols="https")
MSG3_CODE=$(echo $MSG3 | jq -r .https_redirect_status_code)
MSG3_PROTOCAL=$(echo $MSG3 | jq -r .protocols[])
echo "[AFTER] set status code: '$MSG3_CODE', set protocol: '$MSG3_PROTOCAL'"
echo ""
sleep 3
done
### Get certificate Detail
### apt install jq
echo ""
echo "### Certificates ###"
for (( i=1; i<=${#DOMAIN[@]}; i++ )) ; do
### ACME certificates response
### .data.not_after = json key
EXP=$(curl -s http://localhost:8001/acme/certificates/${DOMAIN[i]})
EXPIRE=$(echo $EXP | jq -r .data.not_after)
echo "[DOMAIN] ${DOMAIN[i]}"
echo "[CERT. EXP.] $EXPIRE"
echo ""
sleep 1
done
echo "1) Renew SSL"
echo "2) Check SSL"
echo "3) Quit"
;;
# --------------------------------------------------
# Check SSL
# --------------------------------------------------
"Check SSL")
### Get certificate Detail
### apt install jq
clear
echo ""
echo "### Certificates ###"
echo ""
for (( i=1; i<=${#DOMAIN[@]}; i++ )) ; do
### ACME certificates response
### .data.not_after = json key
EXP=$(curl -s http://localhost:8001/acme/certificates/${DOMAIN[i]})
EXPIRE=$(echo $EXP | jq -r .data.not_after)
echo "[DOMAIN] ${DOMAIN[i]}"
echo "[CERT. EXP.] $EXPIRE"
echo ""
sleep 1
done
echo "1) Renew SSL"
echo "2) Check SSL"
echo "3) Quit"
;;
# --------------------------------------------------
# Quit
# --------------------------------------------------
"Quit")
clear
break
;;
*)
esac
done- run script ด้วยคำสั่ง
bash
bash kong-acme.sh- เลือกข้อ
1) Renew SSLจากนั้น script ก็จะนำโดเมนที่อยู่ในไฟล์domain.txtมาทำการขอ cert.

- ถ้าสร้าง cert. สำเร็จจะแสดงข้อความ
[CERT. EXP.]วันหมดอายุ ตามรูปด้านล่าง

Check Expire
- เลือกข้อ
2) Check SSLเพื่อตรวจสอบวันหมดอายุของโดเมนทั่งหมด จากไฟล์domain.txt

✨ สนับสนุน💰เป็นกำลังใจ ❤️