สรุปขั้นตอนการติดตั้ง Let’s Encrypt SSL Certificate บน MikroTik RouterOS v7.22

ขั้นตอนเตรียมความพร้อม (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/printaccept tcp/80
NTP/system/ntp/client/printsynchronized: yes
Certificate/certificate/printFlags: Ka
Issuer/certificate/print detailLet’s Encrypt
Service/ip/service/printwww-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 เอง

Leave a Reply

Your email address will not be published. Required fields are marked *