ขั้นตอนเตรียมความพร้อม (Prerequisites)
1. ตรวจสอบ Public IP บน WAN
/ip/address/print
/ip/cloud/print
ต้องเป็น Public IP จริง ไม่ใช่ CGNAT
2. ตั้งค่า Domain ชี้มาที่ Router
ใช้ DDNS ฟรีของ MikroTik:
/ip/cloud/set ddns-enabled=yes update-time=yes
/ip/cloud/force-update
/ip/cloud/print
หรือใช้ Domain ของตัวเอง (เช่น vpn.ntddns.com) สร้าง A Record ชี้มาที่ Public IP
3. เปิด Port 80 จาก Internet เข้ามาที่ Router
/ip/firewall/filter/add chain=input protocol=tcp dst-port=80 action=accept place-before=0 comment="ACME http-01"
ถ้าอยู่หลัง Router ตัวอื่น ต้อง Port Forward TCP/80 มาที่ MikroTik ด้วย
4. ตั้งเวลาให้ถูกต้อง (NTP)
/system/ntp/client/set enabled=yes servers=time.google.com,pool.ntp.org
/system/clock/print
ตรวจสอบให้เห็น synchronized: yes
ขั้นตอนการติดตั้ง Certificate
ขั้นที่ 1 ทดสอบด้วย Staging ก่อน (ป้องกันโดน Rate Limit)
/certificate/add-acme domain-names=vpn.ntddns.com directory-url=https://acme-staging-v02.api.letsencrypt.org/directory
ขั้นที่ 2 ดูผลการขอ Certificate
/log/print follow where topics~"certificate"
/certificate/print
ต้องเห็น Flag Ka (K = Private Key, a = ACME-Managed)
ขั้นที่ 3 ลบ Staging Cert แล้วขอ Production จริง
/certificate/remove [find name=acme_cert_vpn.ntddns.com]
/certificate/add-acme domain-names=vpn.ntddns.com directory-url=https://acme-v02.api.letsencrypt.org/directory
ขั้นที่ 4 ตรวจสอบว่าได้ Cert จริง
/certificate/print detail where name=acme_cert_vpn.ntddns.com
ดูที่ issuer: ต้องเห็น Let's Encrypt (ไม่ใช่ Fake LE หรือ STAGING)
ขั้นตอนนำ Certificate ไปใช้งาน
สำหรับ WebFig HTTPS และ API SSL:
/ip/service/set www-ssl certificate=acme_cert_vpn.ntddns.com disabled=no
/ip/service/set api-ssl certificate=acme_cert_vpn.ntddns.com disabled=no
สำหรับ SSTP VPN:
/interface/sstp-server/server/set certificate=acme_cert_vpn.ntddns.com enabled=yes
สำหรับ OpenVPN:
/interface/ovpn-server/server/set certificate=acme_cert_vpn.ntddns.com enabled=yes
สำหรับ IKEv2 / L2TP-IPsec:
/ip/ipsec/identity/set [find] certificate=acme_cert_vpn.ntddns.com
สำหรับ Hotspot:
/ip/hotspot/profile/set [find] ssl-certificate=acme_cert_vpn.ntddns.com login-by=https
การ Auto Renewal (ต่ออายุอัตโนมัติ)
ไม่ต้องทำอะไรเพิ่ม — Cert ที่มี Flag a (ACME-Managed) RouterOS v7 จะต่ออายุให้อัตโนมัติประมาณ 30 วันก่อนหมดอายุ
สิ่งที่ต้องคงไว้เพื่อให้ Renew ทำงาน:
- Port 80 ต้องเปิดจาก Internet ตลอด
- DNS ต้องชี้มาที่ Router ตลอด
- NTP ต้อง Synchronized
- Router ต้องเข้า Internet ได้
สั่ง Renew เองด้วยมือ (ถ้าต้องการ):
/certificate/add-acme domain-names=vpn.ntddns.com directory-url=https://acme-v02.api.letsencrypt.org/directory
ตารางสรุป Checklist
| รายการ | คำสั่งตรวจสอบ | ค่าที่ต้องเป็น |
|---|---|---|
| Public IP | /ip/cloud/print | มี Public IP |
| DNS Resolve | :resolve vpn.ntddns.com | ตรงกับ WAN IP |
| Port 80 | /ip/firewall/filter/print | accept tcp/80 |
| NTP | /system/ntp/client/print | synchronized: yes |
| Certificate | /certificate/print | Flags: Ka |
| Issuer | /certificate/print detail | Let’s Encrypt |
| Service | /ip/service/print | www-ssl enabled |
ปัญหาที่เจอบ่อยและวิธีแก้
1. failure: missing directory url ลืมใส่ directory-url= → ใส่ URL ของ Let’s Encrypt ตามตัวอย่างข้างบน
2. expected end of command ใช้ Parameter ผิดชื่อ → ใช้ directory-url (ไม่ใช่ acme-url) และ domain-names (ไม่ใช่ dns-name)
3. http-01 challenge failed Port 80 ไม่ถึง Router จาก Internet → ทดสอบจากภายนอก curl -v http://vpn.ntddns.com/
4. unable to verify นาฬิกา Router ผิด → เปิด NTP
5. Domain เป็น CGNAT HTTP-01 ใช้ไม่ได้ → ต้องใช้ DNS-01 (RouterOS ยังไม่ Support ตรงๆ ต้องใช้ External Tool)
เท่านี้ก็เสร็จเรียบร้อย ครั้งเดียวจบ ใช้งานได้ยาวๆ ไม่ต้องเขียน Script Renew เอง





