วันนี้ลองจด domain ใหม่ และชี้ DNS มาที่ Public IP ของ Firewall จากนั้นทำ NAT port 80,443 ไปยัง Virtual Machine ที่ติดตั้ง VestaCP เอาไว้ จากนั้นก็สร้าง Web Domain ใหม่ ขึ้นมา โดย Advance Options ก็เพิ่ม SSL / Lets Encrypt Support เข้ามา
ปัญหา
Error: Let’s Encrypt validation status 400 จากที่หาข้อมูลมาเขาว่าเป็นเพราะ server เรามันไม่ตอบสนอง ก็คือ let’s encrypt มันหาทางเข้ามาหาเราไม่เจอนั่นแหละ อาจจะด้วยหลายปัจจัย!!
Error: let’s encrypt new auth status 429 มันมีโอกาสเกิดขึ้นได้ หากเราพยายามสร้าง cer หลายๆ ครั้งในช่วงเวลาหนึ่ง หรือเกินกว่าที่ let’s Encrypt กำหนด ดูรายละเอียดได้ที่ https://letsencrypt.org/docs/rate-limits/
วิธีตรวจสอบและแก้ไข
Firewall
- ดู firewall rule ว่าเราได้ทำ NAT pointing ไว้ถูกต้องหรือป่าว
- เช็คว่าเราเปิด port ไว้มันใช้งานได้หรือป่าว https://www.yougetsignal.com/tools/open-ports/
Service
ตรวจสอบ service ต่างๆ ว่ามันทำงานที่ port ไหน เช่น DNS และ Web + SSL
netstat -plnt | grep named
netstat -plnt | grep httpd
netstat -plnt | grep nginx
ถ้าใช้งาน nginx ก็จะพบกับได้ภาพของ port แบบด้านบน ซึ่งไม่ต้องกังวล ให้เราเน้นที่ 80,443 เป็นหลักก็พอ
Configuration
ไปแก้ไฟล์ Apache Virtual Hosts วิธีนี้ควรจะ backup ไว้ก่อนกันเหนียว เปิดไฟล์ /home/{{username}}/conf/web/{{domain}}.httpd.conf
vi /home/admin/conf/web/moremeng.in.th.httpd.conf
แก้ไขตรง <VirtualHost ---some-server-ip---:80>
โดยใส่ ดอกจัน * เข้าไป
<VirtualHost *:80>
จากนั้น Save และลอง Save SSL ในหน้าของ VestaCP อีกครั้ง หรือใช้คำสั่ง
v-add-letsencrypt-domain username domain
v-add-letsencrypt-domain admin moremeng.in.th
หากติด Error: let's encrypt new auth status 429
ให้รอซักประเดี๋ยว แล้วค่อยลองใหม่ หรือ ให้ใช้ Vesta สร้าง SSL ของตัวเองขึ้นมาก่อน โดยกดที่ Generate CSR จากนั้นคัดลอก Cer และ Key มาใส่ใน 2 ช่องด้านบน จากนั้นกด Save เมื่อเสร็จแล้วให้ v-add อีกครั้ง
ข้อสังเกตุ
หากเราติดตั้ง nginx ไว้ด้วย ตัว package default มันก็จะต้องเลือก nginx โดยปริยาย หมายความว่า หากเราเพิ่ม web domain ใหม่ ให้เรากดเลือก Proxy Support ด้วยทุกครั้ง
Ref: https://forum.vestacp.com/viewtopic.php?f=11&t=18597&sid=c8153ab5a786acf9623d069e892ee589&start=60