MQTT-TLS, cihazlar ile IoT Platform arasındaki yayımla/abone ol (publish/subscribe) iletişimini şifrelemek için TLS protokolünü kullanır ve veri güvenliğini sağlar.
Genel Bilgiler
MQTT CONNECT protokolünü yapılandırırken aşağıdaki hususlara dikkat edin:
Birden fazla fiziksel cihaz aynı cihaz sertifikasını (ProductKey, DeviceName ve DeviceSecret) veya kimlik bilgilerini (ProductKey, DeviceName, ClientID ve DeviceToken) paylaşırsa sık sık bağlantı kopması yaşanır. Yeni kimlik doğrulaması yapan bir cihaz, öncekini çevrimdışı duruma geçirerek otomatik yeniden bağlanma denemelerini tetikler.
Cihaz tarafındaki Link SDK bağlantı koptuğunda otomatik olarak yeniden bağlanır. Cihaz davranışlarını Simple Log Service üzerinden izleyebilirsiniz.
Doğrudan MQTT İstemcisi Bağlantısı
Şifrelenmemiş TCP bağlantıları yüksek güvenlik riski oluşturur ve yeni Enterprise örnekleri için varsayılan olarak devre dışı bırakılmıştır.
-
Güvenli iletişim sağlamak için TLS şifreli bir bağlantı kullanın.
Cihaz tarafındaki Link SDK, TLS şifrelemesi önceden yapılandırılmış olarak gelir. Manuel kurulum gerekmez.
-
Kendi cihaz istemcinizi geliştiriyorsanız IoT Platform sunucusunu doğrulamak için aşağıdaki kök sertifikalardan birini kullanın:
-
Önerilen: Alibaba Cloud IoT Platform kendinden imzalı sertifikası. 4 Temmuz 2053 tarihine kadar geçerlidir. 8883 numaralı bağlantı noktasına bağlanın.
ÖnemliSertifika dosyasının bütünlüğünü doğrulamak için MD5 hash değeri
c7a6afb466713832af778a7bcb6d1aefkullanabilirsiniz. Global Sign R1 kök sertifikası. 28 Ocak 2028 tarihine kadar geçerlidir. 1883 numaralı bağlantı noktasına bağlanın. Süre dolduktan sonra TLS doğrulamasının devam etmesi için cihazların CA kök sertifikasını güncellemesi gerekir.
-
Bağlantı noktası ve sertifika eşleşmesi
Cihazınızın kullandığı kök sertifikaya göre bağlantı noktasını seçin:
Cihazınız Global Sign R1 kök sertifikasını (henüz güncellenmemiş) kullanıyorsa 443 veya 1883 numaralı bağlantı noktasına bağlanın.
Cihazınız Alibaba Cloud IoT Platform kendinden imzalı sertifikasını kullanıyorsa 8883 numaralı bağlantı noktasına bağlanın.
Global Sign R1 sertifikasının süresinin dolmasının etkileri
1883 numaralı bağlantı noktasıyla kullanılan Global Sign R1 kök sertifikasının süresi 28 Ocak 2028 tarihinde dolacaktır. Bu tarihten sonra:
Süresi dolmuş sertifikaya dayanan cihazlar — Link SDK kullananlar veya CA kök sertifikasını güncellememiş kendi geliştirdiğiniz cihazlar dahil — TLS bağlantısı kuramaz.
MQTT-TCP (TLS olmayan) üzerinden bağlanan cihazlar bu sertifika süresi dolmasından etkilenmez.
Gelecek planları
2028 yılından sonra 1883 numaralı bağlantı noktası TLS bağlantılarını desteklemeyecektir. Bu tarihten önce SDK'nızı yükseltin veya cihazlarınızdeki CA kök sertifikasını Alibaba Cloud IoT Platform kendinden imzalı sertifikasıyla güncelleyip 8883 veya 443 numaralı bağlantı noktasına geçiş yapın.
-
Bir MQTT istemcisi kullanarak sunucuya bağlanın.
-
Bağlantı kurmak için açık kaynaklı MQTT istemcilerini kullanabilirsiniz. Ayrıca resmi MQTT belgelerine bakın.
NotAlibaba Cloud, üçüncü taraf kodları için teknik destek sağlamaz.
-
IoT Platform'a bağlanmak için cihaz tarafında bir SDK kullanın . C örneği için MQTT bağlantısı konusuna bakın. Kendi istemcinizi geliştiriyorsanız aşağıdaki parametreleri yapılandırın.
Parametre
Açıklama
Bağlantı alan adı
Public ve Enterprise örneklerinin MQTT bağlantı alan adları için Örnek uç noktalarını görüntüleme ve yapılandırma konusuna bakın.
Değişken başlık: Keep Alive
CONNECT komutu Keep Alive aralığını içermelidir. Geçerli aralık: 30 ila 1200 saniye. Önerilen: 300 saniye veya daha fazla (kararsız ağlar için artırın). IoT Platform, aralık dışındaki değerlerle gelen bağlantıları reddeder.
Ayrıntılar aşağıdaki MQTT keepalive bölümünde yer almaktadır.
MQTT CONNECT mesajı parametreleri
Tek-Cihaz-Tek-Secret ve Tek-Ürün-Tek-Secret ön kayıtlı kimlik doğrulama için: Bir cihaz sertifikası (ProductKey, DeviceName ve DeviceSecret) kullanarak bağlanın.
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|" mqttUsername: deviceName+"&"+productKey mqttPassword: sign_hmac(deviceSecret,content)-
mqttClientId:
| |arasındaki içerik genişletme parametreleridir. -
clientId: Özel bir istemci kimliği. Maksimum uzunluk: 64 karakter. Kolay tanımlama için cihaz MAC adresini veya seri numarasını (SN) kullanmanız önerilir.
-
securemode: Güvenlik modu. Geçerli değerler: 2 (TLS doğrudan bağlantı) ve 3 (TCP doğrudan bağlantı).
-
signmethod: İmza algoritması. Geçerli değerler: hmacmd5, hmacsha1, hmacsha256.
-
timestamp: İsteğe bağlı. Milisaniye cinsinden mevcut zaman.
-
mqttPassword: Sunucuya gönderilen parametreleri alfabetik olarak sıralayın, ardından belirtilen
signmethodkullanarak imzalayın. Hesaplama ayrıntıları için MQTT bağlantı imza örneği konusuna bakın. -
content:
contentdeğeri, sunucuya gönderilen parametrelerin (productKey, deviceName, timestamp ve clientId) değerlerinin birleştirilmesiyle oluşturulan bir dizedir. Birleştirme öncesinde parametreleri isimlerine göre alfabetik olarak sıralayın.ÖnemliproductKey ve deviceName zorunlu parametrelerdir; timestamp ve clientId ise isteğe bağlı parametrelerdir. timestamp veya clientId parametrelerini gönderiyorsanız değerleri mqttClientId ayarıyla aynı olmalıdır.
Örnek:
Varsayalım ki
clientId = 12345, deviceName = device, productKey = pk, timestamp = 789, signmethod=hmacsha1 ve deviceSecret=secret. TCP üzerinden MQTT'ye aşağıdaki parametreler gönderilir:mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789| mqttUsername=device&pk mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();Şifrelenmiş parola ikili-hexadecimal bir dizedir. Örnek bir sonuç aşağıdadır:
FAFD82A3D602B37FB0FA8B7892F24A477F85****MQTT imza parametrelerini hesaplamak için MQTT imza parametreleri nasıl hesaplanır konusuna bakın.
Ön kayıt olmadan Tek-Ürün-Tek-Secret kimlik doğrulama için: ProductKey, DeviceName, ClientID ve DeviceToken kullanarak bağlanın.
mqttClientId: clientId+"|securemode=-2,authType=connwl|" mqttUsername: deviceName+"&"+productKey mqttPassword: deviceToken-
mqttClientId:
| |arasındaki içerik genişletme parametreleridir. -
clientId, deviceToken: MQTT üzerinden dinamik cihaz kaydı işleminden elde edilen ClientID ve DeviceToken değerleridir.
-
securemode: Güvenlik modu. Ön kayıt olmadan Tek-Ürün-Tek-Secret kimlik doğrulama için bu parametre -2 olarak sabittir.
-
authType: Kimlik doğrulama yöntemi. Ön kayıt olmadan Tek-Ürün-Tek-Secret kimlik doğrulama için bu parametre connwl olarak sabittir.
-
-
Örnekler
Aşağıdaki konular, açık kaynaklı MQTT istemcileri kullanılarak yapılan bağlantı örneklerini sunar:
MQTT Keepalive
Cihaz, her keepalive aralığında en az bir mesaj (örneğin bir PING isteği) göndermelidir.
Geçerli aralık: 30 ila 1.200 saniye. Önerilen: 300 saniye veya daha fazla.
Kalp atışı zamanlayıcısı, IoT Platform bir CONNECT mesajına yanıt olarak CONNACK mesajı gönderdiğinde başlar. Bir PUBLISH, SUBSCRIBE, PING veya PUBACK mesajı alındığında zamanlayıcı sıfırlanır. IoT Platform, cihazın keepalive kalp atışını her 30 saniyede bir kontrol eder. Planlanan tespit için bekleme süresi, cihazın çevrimiçi olduğu andan en son planlanan tespite kadar geçen süredir. Maksimum zaman aşımı süresi şu formülle hesaplanır: (keepalive interval × 1.5) + (waiting time for scheduled detection). Maksimum zaman aşımı süresinden sonra cihazdan herhangi bir mesaj alınmazsa sunucu cihazın bağlantısını otomatik olarak keser.