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-1MQTT bağlantısı için TLS'yi etkinleştirir,0devre 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.1parmak 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:
- 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. - Web sunucusunu tamamen kapatın: Yalnızca MQTT ile kontrol ettiğiniz cihazlarda
WebServer 0kullanın. Gerekirse daha sonra MQTT üzerinden yeniden etkinleştirin. - 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.
- Yazılımı güncel tutun. TLS kök listeleri ve güvenlik düzeltmeleri yeni sürümlerle gelir. Tasmota,
Upgrade 1ile MQTT üzerinden yükseltilebilir. - Doğrulamayı devre dışı bırakmayın. Tamamı
FFolan 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.



