Skip to content

ความปลอดภัย TLS

เหตุใด TLS จึงสำคัญสำหรับ IoT อุตสาหกรรม

ข้อมูลการตรวจวัดพลังงานเป็นข้อมูลที่ละเอียดอ่อน — เปิดเผยรูปแบบการดำเนินงานของสถานที่ การใช้งานพื้นที่ และการใช้อุปกรณ์ การส่งข้อมูลนี้โดยไม่เข้ารหัสผ่าน MQTT (พอร์ต 1883) จะทำให้ข้อมูลเสี่ยงต่อ:

  • การดักจับข้อมูลบนเครือข่าย Wi-Fi ภายใน
  • การโจมตีแบบ man-in-the-middle บนเส้นทางอินเทอร์เน็ต
  • การดักจับข้อมูลรับรอง (ชื่อผู้ใช้/รหัสผ่าน MQTT)

การเข้ารหัส TLS (MQTT ผ่านพอร์ต 8883) ปกป้องข้อมูลระหว่างการส่งและยืนยันตัวตนของ broker

โหมด TLS

โหมด ระดับความปลอดภัย กรณีใช้งาน
Fingerprint validation ปานกลาง บ้าน/สำนักงานขนาดเล็ก — ตรวจสอบ fingerprint ของใบรับรอง broker
CA certificate validation สูง องค์กร/AWS IoT/Azure IoT Hub — ตรวจสอบห่วงโซ่ใบรับรองแบบเต็ม

ข้อเปรียบเทียบ

ประเด็น Fingerprint CA Certificate
ความซับซ้อนในการตั้งค่า ง่าย ปานกลาง
การต่ออายุใบรับรอง broker ต้องอัปเดต fingerprint อัตโนมัติ
การใช้หน่วยความจำ ต่ำ สูงกว่า (~20KB)
Man-in-the-middle ปกป้อง (หาก fingerprint ตรงกัน) ปกป้องอย่างสมบูรณ์
รองรับ ESP32-C3 ใช่ ใช่

การรับใบรับรอง TLS

วิธีที่ 1: ดึง Fingerprint จาก Broker

openssl s_client -connect broker.example.com:8883 < /dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout

ผลลัพธ์: sha256 Fingerprint=AA:BB:CC:DD:...

วิธีที่ 2: ดึงจากเบราว์เซอร์

  1. เปิด https://broker.example.com:8883 ในเบราว์เซอร์
  2. คลิกไอคอนแม่กุญแจ → Certificate → Details
  3. คัดลอก SHA-256 fingerprint

วิธีที่ 3: Let's Encrypt (แนะนำ)

ใช้ broker ที่มีใบรับรอง Let's Encrypt เพื่อการต่ออายุอัตโนมัติ

การตั้งค่า TLS Fingerprint

ขั้นตอนที่ 1: ตั้งค่า MQTT Port เป็น 8883

ผ่าน web UI → Configuration → Configure MQTT → Port: 8883

ขั้นตอนที่ 2: ตั้งค่า TLS Fingerprint

ผ่าน Tasmota console:

MqttFingerprint1 AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99

ขั้นตอนที่ 3: โหมด Auto-Learn (ทางเลือก)

หากคุณไม่มี fingerprint ในมือ ให้เปิดใช้งาน auto-learn:

SetOption132 1

อุปกรณ์จะเรียนรู้ fingerprint ของ broker จากการเชื่อมต่อ TLS ครั้งแรกที่สำเร็จ ตรวจสอบ fingerprint ที่เรียนรู้ว่าตรงกับ broker ของคุณก่อนที่จะเชื่อถือ

ขั้นตอนที่ 4: ตรวจสอบการเชื่อมต่อ TLS

ตรวจสอบบันทึกคอนโซลสำหรับ:

MQTT: Connected to broker.example.com:8883 (TLS)

ทดสอบการเชื่อมต่อพอร์ต:

openssl s_client -connect broker.example.com:8883

การตั้งค่า CA Certificate Validation

สำหรับการใช้งานในองค์กรที่ใช้ AWS IoT, Azure IoT Hub หรือ CA ส่วนตัว:

Compile flag: #define USE_MQTT_TLS_CA_CERT

ซึ่งจะจัดเก็บห่วงโซ่ใบรับรอง CA แบบเต็มในเฟิร์มแวร์ ติดต่อ RACKSYNC สำหรับเฟิร์มแวร์เฉพาะที่มี CA certificate ของคุณ

การแก้ไขปัญหา TLS

Fingerprint ไม่ตรงกันหลังจากต่ออายุใบรับรอง

หากใบรับรองของ broker ได้รับการต่ออายุ (เช่น Let's Encrypt ทุก 90 วัน):

  1. ดึง fingerprint ใหม่
  2. อัปเดตผ่านคอนโซล: MqttFingerprint1 <new-fingerprint>
  3. รีสตาร์ท MQTT: Restart 1

การป้องกัน: ใช้ CA certificate validation แทน fingerprint

ข้อผิดพลาดด้านหน่วยความจำบน ESP32-C3

TLS ต้องการ RAM เพิ่มเติม หากเกิดข้อผิดพลาดด้านหน่วยความจำ:

  • ลด TelePeriod (ส่งบ่อยน้อยลง = ใช้หน่วยความจำน้อยลง)
  • ปิดใช้งานฟีเจอร์ Tasmota ที่ไม่ได้ใช้
  • พิจารณาใช้โหมด fingerprint แทน CA validation

พอร์ตถูกบล็อก

ตรวจสอบว่าพอร์ต 8883 เปิดอยู่:

telnet broker.example.com 8883
nc -zv broker.example.com 8883

ใบรับรองหมดอายุ

ตรวจสอบวันหมดอายุของใบรับรอง:

openssl s_client -connect broker.example.com:8883 < /dev/null 2>/dev/null | openssl x509 -noout -dates

แนวปฏิบัติที่ดีด้านความปลอดภัยของอุปกรณ์

แนวปฏิบัติ วิธีการ
เปลี่ยนข้อมูลรับรอง MQTT เริ่มต้น ตั้งค่าชื่อผู้ใช้/รหัสผ่านที่ไม่ซ้ำ
เปลี่ยนรหัสผ่านมิเตอร์ (1000) เมนูตั้งค่า → รหัสผ่าน
ปิด open AP หลังตั้งค่า AP mode ทำงานเฉพาะการบูตครั้งแรกหรือรีเซ็ตโรงงาน
เปิดใช้งานรหัสผ่าน web UI Web UI → Configuration → Configure Web Admin
ใช้ HTTPS สำหรับ OTA ใช้ HTTPS URL เท่านั้นสำหรับอัปเดตเฟิร์มแวร์
อัปเดตเฟิร์มแวร์อยู่เสมอ ตรวจสอบอัปเดตเฟิร์มแวร์ RACKSYNC เป็นประจำ

ข้อแนะนำด้านความปลอดภัยเครือข่าย

ข้อแนะนำ รายละเอียด
IoT VLAN วางอุปกรณ์ตรวจวัดพลังงานบน VLAN แยกต่างหาก
กฎไฟร์วอลล์ อนุญาตเฉพาะขาออกพอร์ต 8883 ไปยัง MQTT broker
ความปลอดภัย RS485 ทางกายภาพ จำกัดการเข้าถึงทางกายภาพมิเตอร์และ RS485 bus
ความปลอดภัย Wi-Fi ใช้ WPA3 หรือ WPA2-Enterprise