แก้ VestaCP Error: Let’s Encrypt validation status 400

วันนี้ลองจด domain ใหม่ และชี้ DNS มาที่ Public IP ของ Firewall จากนั้นทำ NAT port 80,443 ไปยัง Virtual Machine ที่ติดตั้ง VestaCP เอาไว้ จากนั้นก็สร้าง Web Domain ใหม่ ขึ้นมา โดย Advance Options ก็เพิ่ม SSL / Lets Encrypt Support เข้ามา

ปัญหา

SSL Error: Let’s Encrypt validation status 400 จากที่หาข้อมูลมาเขาว่าเป็นเพราะ server เรามันไม่ตอบสนอง ก็คือ let’s encrypt มันหาทางเข้ามาหาเราไม่เจอนั่นแหละ อาจจะด้วยหลายปัจจัย!!

วิธีตรวจสอบและแก้ไข

Firewall

  1. ดู firewall rule ว่าเราได้ทำ NAT pointing ไว้ถูกต้องหรือป่าว
  2. เช็คว่าเราเปิด 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

ข้อสังเกตุ

หากเราติดตั้ง nginx ไว้ด้วย ตัว package default มันก็จะต้องเลือก nginx โดยปริยาย หมายความว่า หากเราเพิ่ม web domain ใหม่ ให้เรากดเลือก Proxy Support ด้วยทุกครั้ง

Ref: https://forum.vestacp.com/viewtopic.php?f=11&t=18597&sid=c8153ab5a786acf9623d069e892ee589&start=60