IoT Otomasyon

Tasmota MQTT TLS: ESP32 Tasmota Cihazını 8883 Portunda Bir Broker'a Bağlama

Hangi Tasmota derlemelerinin TLS içerdiğini, SetOption103 ve SetOption132'nin nasıl çalıştığını ve bir ESP32 Tasmota cihazını 8883 portundaki şifreli bir MQTT broker'a nasıl bağlayacağınızı öğrenin.

8883 portunda tasmota mqtt tls bağlantısını simgeleyen asma kilit işaretli ESP32 akıllı röle
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Tasmota MQTT TLS, broker parolası dahil cihazınızın gönderdiği ve aldığı her şeyi şifreler; böylece prizleri ve röleleri internetteki bir broker'a güvenle bağlayabilirsiniz. Bu rehber, hangi Tasmota derlemelerinin gerçekten TLS içerdiğini, TLS ile ilgili iki seçeneğin nasıl çalıştığını ve Tasmota çalıştıran bir ESP32'yi düzgün sertifika doğrulamasıyla 8883 portundaki bir broker'a nasıl bağlayacağınızı açıklar.

Düz MQTT Neden Yeterli Değil?

1883 portunda MQTT düz metin olarak iletilir. CONNECT paketi kullanıcı adını ve parolayı açık şekilde taşır ve her cmnd/.../POWER mesajı yol üzerindeki herkes tarafından okunabilir veya tekrar oynatılabilir. İyi yönetilen bir ev ağında bu risk küçüktür. Ancak broker buluta taşındığında yol, internet servis sağlayıcınızdan ve herkese açık internetten geçer; bu noktada düz metin artık kabul edilemez.

TLS üç sorunu birden çözer: oturumu şifreler, cihaza gerçek broker ile konuştuğunu kanıtlar ve kimlik bilgilerini korur. MQTT güvenliği en iyi uygulamaları rehberi genel tabloyu ele alır; bu makale ise Tasmota'nın kendisine bunu yaptırmaya odaklanır.

Hangi Tasmota Derlemeleri MQTT TLS'yi Destekler?

Çoğu kişinin takıldığı yer burasıdır. TLS bellek ve kod alanı gerektirdiği için her ikili dosyaya derlenmez.

Platform Derleme MQTT TLS
ESP32 tasmota32 ve varyantları Dahil
ESP32 tasmota32-zbbridge Dahil
ESP8266 tasmota, tasmota-lite, tasmota-sensors ve diğer standart derlemeler Dahil değil
ESP8266 USE_MQTT_TLS ile kendi derlemeniz Mümkün, ancak bellek sıkışık

Cihazınız bir ESP8266 prizse iki seçeneğiniz var: user_config_override.h dosyasına #define USE_MQTT_TLS ekleyerek kendi derlemenizi oluşturmak ya da güvenilir bir yerel broker'da düz MQTT'yi kabul edip bulut tarafını başka yerde tutmak. ESP8266'da TLS el sıkışması kullanılabilir RAM'in büyük bir kısmını tüketir; bu nedenle büyük bir kural motoru veya çok sayıda sensör gibi özellikler onunla birlikte sığmayabilir. Yeni projeler için ESP32 donanımını tercih edin.

Ne çalıştırdığınızı kontrol etmek için web arayüzünü açın ve sürümü ile derleme adını gösteren alt bilgiye veya Information sayfasına bakın; örneğin 14.2.0(release-tasmota32).

Let's Encrypt için sürüm önemlidir

Tasmota, broker sertifikasını tam bir CA paketi yerine yerleşik küçük bir kök sertifika listesine göre doğrular. Let's Encrypt kökü olan ISRG Root X1, Tasmota 13.4.1.2 sürümünde eklendi. broker.connectmq.com gibi broker'lar Let's Encrypt sertifikası kullanır; bu yüzden cihazın güncel bir sürüm çalıştırdığından emin olun, daha eskiyse önce yükseltin.

İki TLS Seçeneğinin Açıklaması

Tasmota TLS'yi iki SetOption komutuyla kontrol eder:

  • SetOption103 - 1 MQTT bağlantısı için TLS'yi etkinleştirir, 0 devre dışı bırakır. Yalnızca TLS ile derlenmiş sürümlerde etkilidir.
  • SetOption132 - sunucu sertifikasının nasıl doğrulanacağını seçer. 0 (varsayılan) sertifikayı yerleşik sertifika otoritelerine göre kontrol eder. 1 parmak izi (fingerprint) doğrulamasına geçer.

Herkesçe güvenilen bir sertifikaya sahip her broker için SetOption132 değerini 0 olarak bırakın. Parmak izi doğrulaması belirli bir sertifikayı sabitler; Let's Encrypt sertifikaları birkaç ayda bir yenilendiğinden, sabitlenmiş bir parmak izi siz sürekli güncellemedikçe bir sonraki yenilemede bozulur.

Adım 1: Tasmota MQTT TLS'yi Herkese Açık Broker'da Test Edin

broker.connectmq.com adresindeki herkese açık MQTT test broker, benzersiz herhangi bir client ID ile 8883 portunda anonim TLS bağlantılarını kabul eder. q8v3mz gibi rastgele bir önek seçin ve Tasmota konsoluna şunu girin:

Backlog SetOption103 1; SetOption132 0; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient tasmota-q8v3mz; MqttUser 0; MqttPassword 0; Topic relay1; FullTopic connectmq/demo/q8v3mz/%prefix%/%topic%/

Cihaz yeniden başlar. Konsolu izleyin: başarılı bir bağlantı, TLS'nin bağlandığını belirten bir mesaj ve ardından MQT: Connected satırını kaydeder. ESP32'de ilk el sıkışma bir iki saniye sürebilir; bu normaldir.

Bir bilgisayardan doğrulayın:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -i watch-q8v3mz -t 'connectmq/demo/q8v3mz/#' -v

tele/relay1/LWT Online ile INFO ve STATE mesajlarını görmelisiniz. TLS üzerinden bir komut gönderin:

mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -i send-q8v3mz -t 'connectmq/demo/q8v3mz/cmnd/relay1/POWER' -m 'TOGGLE'

Herkese açık alanın TLS üzerinden bile herkes tarafından okunabildiğini unutmayın. TLS topic'e erişimi değil, taşıma katmanını korur. Önemli bir şeyi kontrol eden bir cihazı herkese açık topic'lerde bırakmayın.

Adım 2: Kimlik Bilgileriyle Özel Broker'ınıza Bağlanın

Üretim ortamı için özel bir broker oluşturun. ConnectMQ'da bir plan seçer, bir broker oluşturur ve bir kullanıcı adı, parola ve client ID alırsınız. Client ID bu kimlik bilgilerine bağlıdır; bu yüzden onu birebir girin:

Backlog SetOption103 1; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient YOUR_CLIENT_ID; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; Topic relay1; FullTopic home/%prefix%/%topic%/

Portalda broker'ınız için farklı bir host gösteriliyorsa onu kullanın. Yeniden başlatmanın ardından portalın canlı topic gezginini açın; retained değeri Online olan home/tele/relay1/LWT, cihazın kendi kimliğiyle TLS üzerinden bağlandığını doğrular.

Etkin ayarları istediğiniz zaman Status 6 ile doğrulayabilirsiniz; bu komut MQTT host, port, client ve kullanıcı bilgilerini yazdırır (parola asla gösterilmez).

Adım 3: Cihazı Sıkılaştırın

MQTT bağlantısındaki TLS yalnızca bir katmandır. Birkaç ek ayar belirgin açıkları kapatır:

  1. Web yönetici parolası belirleyin: WebPassword <güçlü parola> kullanın; aksi takdirde Wi-Fi ağınızdaki herkes arayüzü açıp MQTT ayarlarını okuyabilir.
  2. Web sunucusunu tamamen kapatın: Yalnızca MQTT ile kontrol ettiğiniz cihazlarda WebServer 0 kullanın. Gerekirse daha sonra MQTT üzerinden yeniden etkinleştirin.
  3. Her cihaz için ayrı kimlik bilgisi kullanın. Bir priz kaybolur veya ele geçirilirse diğerlerine dokunmadan yalnızca bir seti iptal edersiniz.
  4. Yazılımı güncel tutun. TLS kök listeleri ve güvenlik düzeltmeleri yeni sürümlerle gelir. Tasmota, Upgrade 1 ile MQTT üzerinden yükseltilebilir.
  5. Doğrulamayı devre dışı bırakmayın. Tamamı FF olan parmak izleri veya diğer "her şeyi kabul et" geçici çözümleri, TLS'nin kimlik doğrulama yarısını ortadan kaldırır.

Tasmota MQTT TLS Sorun Giderme

Belirti Olası neden Ne yapmalı
SetOption103 etkisiz TLS içermeyen derleme Bir tasmota32 derlemesi yükleyin veya USE_MQTT_TLS ile kendiniz derleyin
TLS el sıkışması başarısız, sertifika hatası 13.4.1.2'den eski yazılımda ISRG Root X1 yok Tasmota'yı yükseltin
TLS açılıştan hemen sonra başarısız, sonra çalışıyor Saat henüz ayarlanmamış NTP'nin çalıştığından emin olun; sertifika kontrolleri doğru saati gerektirir
1883'te bağlanıyor ama 8883'te bağlanmıyor Misafir Wi-Fi'de veya güvenlik duvarında port engelli Başka bir ağdan test edin
Cihaz el sıkışma sırasında yeniden başlıyor (ESP8266) Bellek yetersiz Sürücüleri kaldırın, ESP32 kullanın
rc 5 yetkisiz Kimlik bilgisi veya client ID uyuşmazlığı Değerleri portaldan yeniden kopyalayın

Tasmota yerine özel bir yazılım geliştiriyorsanız aynı TLS ilkeleri Arduino kodunda da geçerlidir; WiFiClientSecure örneği için ESP32 MQTT eğitimine bakın. Topic ve full topic dahil genel Tasmota yapılandırma akışı Tasmota MQTT kurulum rehberinde yer alıyor. Her seçeneğin resmi başvuru kaynağı Tasmota TLS belgelerinde bulunur.

Varsayılan Olarak TLS Konuşan Bir Bulut Broker

TLS'li, kendi barındırdığınız bir broker; sertifika satın almak veya yenilemek, dinleyicileri yapılandırmak ve sunucuya yama yapmak demektir. ConnectMQ gibi tam yönetilen bir MQTT hizmeti, Let's Encrypt sertifikası hazır olarak 8883 portunda TLS ve 8084 portunda güvenli WebSocket sunar; ayrıca tekrarlanan başarısız oturum açma denemelerinden sonra IP engelleme sağlar. Böylece evdeki veya birkaç sahadaki birkaç ESP32 rölesi tek bir güvenli broker'ı paylaşabilir. Bu cihazların genel resimde nereye oturduğunu görmek için IoT otomasyon rehberine göz atın.

Tasmota Cihazlarınızı ConnectMQ ile Güvene Alın

app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun. Üretilen kimlik bilgilerini yukarıdaki konsol komutuna yapıştırın, SetOption103 seçeneğini açın; Tasmota cihazlarınız dakikalar içinde TLS üzerinden bağlanır.

Sık Sorulan Sorular

Tasmota TLS üzerinden MQTT'yi destekliyor mu?

Evet, ESP32 tasmota32 derlemelerinde kutudan çıktığı haliyle destekler. Standart ESP8266 derlemeleri TLS içermez; USE_MQTT_TLS ile özel bir derleme gerekir.

Tasmota'da SetOption103 ne işe yarar?

SetOption103 1, TLS desteği içeren derlemelerde MQTT bağlantısı için TLS'yi etkinleştirir. Bunu MqttPort 8883 ile birlikte kullanın.

Parmak izi doğrulaması mı yoksa CA doğrulaması mı kullanmalıyım?

Let's Encrypt gibi herkesçe güvenilen sertifikalara sahip broker'lar için CA doğrulamasını (SetOption132 0) kullanın. Parmak izleri sertifika her yenilendiğinde bozulur.

Tasmota TLS bağlantım eski bir yazılımla neden başarısız oluyor?

Eski sürümler Let's Encrypt'in kullandığı ISRG Root X1 sertifikasını içermez, bu yüzden doğrulama başarısız olur. Tasmota 13.4.1.2 veya sonraki bir sürüme yükseltmek sorunu çözer.

İlgili yazılar

Zigbee2MQTT Kurulum Rehberi: Koordinatörden Panoya

Zigbee2MQTT'yi Docker ile kurun, koordinatörü ve MQTT bağlantısını yapılandırın, cihazları eşleştirip yeniden adlandırın, onları MQTT üzerinden kontrol edin ve durumlarını bir panoda görüntüleyin; önce ücretsiz herkese açık bir broker'da test edin.

7 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.