Aşağı akış cihazını Azure IoT Edge ağ geçidine bağlama

Uygulama hedefi:  Evet simgesi IoT Edge 1,1  evet IoT Edge 1,2

Bu makalede, aşağı akış cihazlarıyla saydam ağ geçitleri arasında güvenilir bir bağlantı IoT Edge yönergeleri sağlar. Saydam bir ağ geçidi senaryosunda, bir veya daha fazla cihaz, iletilerini ağ geçidiyle bağlantıyı sürdüren tek bir ağ geçidi IoT Hub.

Başarılı bir saydam ağ geçidi bağlantısı ayarlamak için üç genel adım vardır. Bu makale üçüncü adımı kapsar:

  1. Aşağı akış cihazlarının güvenli bir şekilde bağlanacak şekilde ağ geçidini bir sunucu olarak yapılandırma. Aşağı akış cihazlarından iletileri almak ve bunları uygun hedefe yönlendiren ağ geçidini ayarlayın. Bu adımlar için bkz. Bir IoT Edge saydam ağ geçidi olarak davranacak şekilde yapılandırma.
  2. Aşağı akış cihazı için bir cihaz kimliği oluşturun, böylece cihaz kimliği IoT Hub. Aşağı akış aygıtını ağ geçidi cihazı üzerinden ileti gönderecek şekilde yapılandırma. Bu adımlar için bkz. Bir aşağı akış cihazında kimlik doğrulaması Azure IoT Hub.
  3. Bağlan aşağı akış cihazına göndererek ileti göndermeye başlamayı deneyin.

Bu makalede aşağı akış cihaz bağlantıları için temel kavramlar ele alır ve aşağı akış cihazlarınızı ayarlarken size şu şekilde yol gösterir:

  • Aktarım katmanı güvenliğini (TLS) ve sertifika temellerini açıklama.
  • TLS kitaplıkları farklı işletim sistemlerinde nasıl çalışır ve her işletim sisteminin sertifikalarla nasıl başa çıktısı açıklandı.
  • Başlamanıza yardımcı olmak için çeşitli dillerdeki Azure IoT örneklerinin üzerinden geçerek.

Bu makalede ağ geçidi ve IoT Edge ağ geçidi terimleri, saydam bir IoT Edge olarak yapılandırılmış bir ağ geçidi cihazına başvurur.

Önkoşullar

  • Cihaz CA sertifikasını oluşturmak için kullanılan kök CA sertifika dosyasını Aşağı akış IoT Edge saydam bir ağ geçidi gibi davranacak şekilde yapılandırma içinde bulun. Aşağı akış cihazınız ağ geçidi cihazınızın kimliğini doğrulamak için bu sertifikayı kullanır. Tanıtım sertifikalarını kullandıysanız, kök CA sertifikası azure-iot-test-only.root.ca.cert.pem olarak çağrılır.
  • Bir aşağı akış cihazı için kimlik doğrulaması yapma içinde açıklanan şekilde ağ geçidi cihazına bakan değiştirilmiş bağlantı dizesini Azure IoT Hub.

Aşağı akış cihazı hazırlama

Aşağı akış cihazı, bulut hizmetiyle oluşturulmuş bir kimliğe sahip herhangi bir Azure IoT Hub platform olabilir. Çoğu durumda, bu uygulamalar Azure IoT cihaz SDK'sı kullanır. Aşağı akış cihazı, ağ geçidi cihazı üzerinde çalışan bir IoT Edge olabilir. Ancak, başka IoT Edge cihaz bir ağ geçidinin aşağı IoT Edge olamaz.

Aşağı akış cihazı, bulut hizmetiyle oluşturulmuş bir kimliğe sahip herhangi bir Azure IoT Hub platform olabilir. Çoğu durumda, bu uygulamalar Azure IoT cihaz SDK'sı kullanır. Aşağı akış cihazı, ağ geçidi cihazı üzerinde çalışan bir IoT Edge olabilir.

Bu makalede, bir IoT cihazı aşağı akış cihazı olarak bağlama adımları açıklanmıştır. Aşağı akış cihazı IoT Edge bir cihaz varsa, bkz. Bağlan bir aşağı akış IoT Edge ağ geçidine Azure IoT Edge.

Not

IoT Hub IoT cihazları, tek bir cihazda farklı işlemleri, donanımı veya işlevleri yalıtmak için modül ikizlerini kullanabilir. IoT Edge ağ geçitleri simetrik anahtar kimlik doğrulaması kullanan aşağı akış modülü bağlantılarını destekler, ancak X.509 sertifika kimlik doğrulamasını desteklemez.

Bir aşağı akış aygıtını bir IoT Edge ağ geçidine bağlamak için iki şey gerekir:

  • Ağ geçidine bağlamak için bilgilerle birlikte IoT Hub cihaz bağlantı dizesiyle yapılandırılmış bir cihaz veya uygulama.

    Bu adım, bir aşağı akış cihazı için kimlik doğrulaması yapma makalesinde Azure IoT Hub.

  • Ağ geçidi cihazına aktarım katmanı güvenliği (TLS) bağlantılarını doğrulamak için cihazın veya uygulamanın ağ geçidinin kök CA sertifikasına güvenmesi gerekir.

    Bu adım, bu makalenin geri kalanında ayrıntılı olarak açıklanmıştır. Bu adım iki şekilde yapılabilir: CA sertifikasını işletim sisteminin sertifika deposuna yükleyerek veya (belirli diller için) Azure IoT SDK'larını kullanan uygulamalar içindeki sertifikaya başvurarak.

TLS ve sertifika temelleri

Aşağı akış cihazlarını IoT Edge güvenli bir şekilde bağlamanın zor olduğu, internet üzerinden meydana gelen diğer tüm güvenli istemci/sunucu iletişimleridir. İstemci ve sunucu, Aktarım katmanı güvenliği (TLS)kullanarak İnternet üzerinden güvenli bir şekilde iletişim kurar. TLS, sertifika olarak adlandırılan standart Ortak anahtar altyapısı (PKI) yapıları kullanılarak inşa edilmiştir. TLS oldukça ilgili bir belirtimdir ve iki uç noktanın güvenliğini sağlamayla ilgili çok çeşitli konuları ele almaktadır. Bu bölümde, cihazları bir ağ geçidine güvenli bir şekilde bağlamak için IoT Edge özetlenmiştir.

bir istemci bir sunucuya bağlandığında, sunucu sunucu sertifika zinciri adlı bir sertifika zinciri sunar. Sertifika zinciri genellikle bir kök sertifika yetkilisi (CA) sertifikası, bir veya daha fazla ara CA sertifikası ve son olarak sunucunun sertifikasının kendisini içerir. İstemci, sunucu sertifika zincirinin tamamını şifrelemeyle doğrular ve sunucuyla güven kurulur. Sunucu sertifika zincirinin bu istemci doğrulamasına sunucu zinciri doğrulaması denir. İstemci, sahiplik kanıtı adlı bir işlemde sunucu sertifikasıyla ilişkili özel anahtarın sahibi olduğunu kanıtlamak için sunucuyu zorlar. Sunucu zinciri doğrulaması ile sahiplik kanıtının birleşimi sunucu kimlik doğrulaması olarak adlandırılan bir alandır. Bir sunucu sertifika zincirini doğrulamak için, bir istemcinin sunucunun sertifikasını oluşturmak (veya oluşturmak) için kullanılan kök CA sertifikasının bir kopyasına ihtiyacı vardır. Normalde web sitelerine bağlanırken tarayıcı yaygın olarak kullanılan CA sertifikalarını önceden yapılandırarak istemcinin sorunsuz bir işleme sahip olması için gelir.

Bir cihaz Azure IoT Hub bağlandığında, cihaz istemcidir ve IoT Hub hizmeti sunucudur. Bulut IoT Hub hizmeti, genel kullanıma açık ve yaygın olarak kullanılan Baltimore CyberTrust Root adlı bir kök CA sertifikası ile de desteklemektedir. IoT Hub CA sertifikası çoğu cihaza zaten yüklü olduğu için, birçok TLS uygulaması (OpenSSL, Schannel, LibreSSL) sunucu sertifikası doğrulaması sırasında otomatik olarak kullanır. Ancak, bir cihaza başarıyla bağlanan IoT Hub ağ geçidine bağlanmaya çalışırken IoT Edge olabilir.

Cihaz bir ağ geçidine IoT Edge, aşağı akış cihazı istemci, ağ geçidi cihazı ise sunucudur. Azure IoT Edge, uygun olduğu şekilde ağ geçidi sertifika zincirleri oluşturmanıza olanak sağlar. Baltimore gibi bir genel CA sertifikası kullanmayı veya otomatik olarak imzalanan (veya kurum içinde) bir kök CA sertifikası kullanmayı seçebilirsiniz. Genel CA sertifikalarının genellikle bir maliyeti vardır, bu nedenle genellikle üretim senaryolarında kullanılır. Geliştirme ve test için otomatik olarak imzalanan CA sertifikaları tercih edilir. Tanıtım sertifikalarını kullanıyorsanız, bunlar otomatik olarak imzalanan kök CA sertifikalarıdır.

IoT Edge ağ geçidi için otomatik olarak imzalanan bir kök CA sertifikası kullanırken, ağ geçidine bağlanmaya çalışan tüm aşağı akış cihazlarına yüklenmiş veya sağlanmalıdır.

Ağ geçidi sertifikası kurulumu

Sertifikaları ve üretimle ilgili IoT Edge etkileri hakkında daha fazla bilgi edinmek için bkz. IoT Edge kullanım ayrıntıları.

Kök CA sertifikasını sağlama

Ağ geçidi aygıtının sertifikalarını doğrulamak için aşağı akış cihazına kök CA sertifikasının kendi kopyası gerekir. Test sertifikaları oluşturmak için IoT Edge git deposunda sağlanan betikleri kullandıysanız, kök CA sertifikasına azure-iot-test-only.root.ca.cert.pem adı verilmektedir. Diğer aşağı akış cihazı hazırlama adımlarının bir parçası olarak henüz bir adım atamadıysanız, bu sertifika dosyasını aşağı akış cihazınızın herhangi bir dizinine taşımanız gerekir. Sertifika dosyasını taşımak için Azure Key Vault protokolü gibi bir hizmet veya Güvenli kopyalama protokolü gibi bir işlev kullanabilirsiniz.

Sertifikaları işletim sistemine yükleme

Kök CA sertifikası aşağı akış cihazında olduktan sonra, ağ geçidine bağlanan uygulamaların sertifikaya erişe olduğundan emin olun.

Kök CA sertifikasını işletim sisteminin sertifika deposuna yüklemek genellikle çoğu uygulamanın kök CA sertifikasını kullanmasını sağlar. NodeJS uygulamaları gibi işletim sistemi sertifika depolarını kullanmayan, node çalışma zamanının iç sertifika depolarını kullanan bazı özel durumlar vardır. Sertifikayı işletim sistemi düzeyinde yükleye biliyorsanız Azure IoT SDK'larıile sertifikaları kullanma adımına atlayabilirsiniz.

Ubuntu

Aşağıdaki komutlar, ubuntu ana bilgisayar üzerinde CA sertifikası yükleme örneğidir. Bu örnekte, önkoşul makalelerinden azure-iot-test-only.root.ca.cert.pem sertifikasını kullanmakta ve sertifikayı aşağı akış cihazında bir konuma kopyaladnız varsayar.

sudo cp <path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates

"/etc/ssl/certs... içinde sertifikalar güncelleştiriliyor... 1 eklendi, 0 kaldırıldı; bitti."

Windows

Aşağıdaki adımlar, bir sertifika yetkilisi ana bilgisayara CA sertifikasının nasıl yük Windows örnektir. Bu örnekte, önkoşul makalelerinden azure-iot-test-only.root.ca.cert.pem sertifikasını kullanmakta ve sertifikayı aşağı akış cihazında bir konuma kopyaladnız varsayar.

PowerShell'in Import-Certificate'ını yönetici olarak kullanarak sertifikaları yükleyebilirsiniz:

import-certificate  <file path>\azure-iot-test-only.root.ca.cert.pem -certstorelocation cert:\LocalMachine\root

Sertifikaları certlm yardımcı programını kullanarak da yükleyebilirsiniz:

  1. Aşağıdaki Başlat menüsü bilgisayar sertifikalarını yönet'i seçin. certlm adlı bir yardımcı program açılır.
  2. Sertifikalar - Yerel Bilgisayar 'a gidin > Güvenilen Kök Sertifika Yetkilileri.
  3. Sertifikalar'a sağ tıklayın ve Tüm Görevler İçeri Aktar'ı > seçin. Sertifika içeri aktarma sihirbazının başlatılması gerekir.
  4. Adımlarını yönlendirildi ve sertifika dosyasını içeri <path>/azure-iot-test-only.root.ca.cert.pem aktarın. Tamamlandığında bir "Başarıyla içe aktarıldı" iletisi görüyorsanız.

Bu makalenin devamlarında .NET örneğinde gösterildiği gibi, sertifikaları program aracılığıyla .NET API'lerini kullanarak da yükleyebilirsiniz.

Uygulamalar genellikle Schannel Windows TLS üzerinden güvenli bir şekilde bağlanmak için sağlanan TLS yığınını kullanır. Schannel, TLS bağlantısı kurmadan önce Windows sertifika deposuna tüm sertifikaların yüklü olması gerekir.

Azure IoT SDK'ları ile sertifikaları kullanma

Bu bölümde, Azure IoT SDK'ları basit örnek uygulamaları kullanarak IoT Edge bir IoT Edge cihaza nasıl bağlanıldı? Tüm örneklerin amacı cihaz istemcisini bağlamak ve ağ geçidine telemetri iletileri göndermek, ardından bağlantıyı kapatmak ve çıkmaktır.

Uygulama düzeyi örnekleri kullanmadan önce iki şeyi hazır hale koyun:

  • Aşağı akış cihazınızın IoT Hub ağ geçidi cihazına işaret etmek için değiştirilen bağlantı dizesi ve aşağı akış cihazınızın kimliğini doğrulamak için gereken tüm sertifikalar IoT Hub. Daha fazla bilgi için bkz. Bir aşağı akış cihazında kimlik doğrulaması Azure IoT Hub.

  • Aşağı akış cihazınızın bir yere kopyalanmış ve kaydedilmiş kök CA sertifikasının tam yolu.

    Örneğin, <path>/azure-iot-test-only.root.ca.cert.pem.

NodeJS

Bu bölümde, bir Azure IoT NodeJS cihaz istemcisini bir azure ağ geçidine bağlamak için IoT Edge sağlar. NodeJS uygulamaları için, burada gösterildiği gibi kök CA sertifikasını uygulama düzeyinde yüklemeniz gerekir. NodeJS uygulamaları sistemin sertifika depolarını kullanmaz.

  1. örnekedge_downstream_device.js için Azure IoT cihaz SDK'sı'Node.js örneğini alın.
  2. Readme.md dosyasını gözden geçirerek örneği çalıştırmak için tüm önkoşullara sahip readme.md olun.
  3. edge_downstream_device.js dosyasında connectionString ve edge_ca_cert_path güncelleştirin.
  4. Örneği cihazınıza çalıştırma yönergeleri için SDK belgelerine bakın.

Çalıştırmakta olan örneği anlamak için aşağıdaki kod parçacığı istemci SDK'sı tarafından sertifika dosyasını nasıl okuduğu ve güvenli bir TLS bağlantısı kurmak için nasıl kullandığıdır:

// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
    ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};

.NET

Bu bölümde, bir Azure IoT .NET cihaz istemcisini bir ağ geçidine bağlamak için IoT Edge tanıt sunulmaktadır. Ancak.NET uygulamaları, sistemin sertifika depolama alanı içinde yüklü olan tüm sertifikaları hem Linux hem de Windows kullanabilir.

  1. .NET samples klasöründen EdgeDownstreamDevice IoT Edge alın.
  2. Readme.md dosyasını gözden geçirerek örneği çalıştırmak için tüm önkoşullara sahip readme.md olun.
  3. Özellikler / launchSettings.json dosyasında, DEVICE_CONNECTION_STRING ve CA_CERTIFICATE_PATH güncelleştirin. Konak sistemi üzerinde güvenilen sertifika deposuna yüklü sertifikayı kullanmak için bu değişkeni boş bırakın.
  4. Örneği cihazınıza çalıştırma yönergeleri için SDK belgelerine bakın.

Bir .NET uygulaması aracılığıyla sertifika deposuna program aracılığıyla güvenilir bir sertifika yüklemek için EdgeDownstreamDevice / Program.cs dosyasındaki InstallCACert() işlevine bakın. Bu işlem her zaman aynı etkiye sahiptir, bu nedenle ek bir etkiyle aynı değerlerle birden çok kez çalışmasına izin verir.

C

Bu bölümde, bir Azure IoT C cihaz istemcisini bir azure ağ geçidine bağlamak için IoT Edge tanıt sunulmaktadır. C SDK; OpenSSL, WolfSSL ve Schannel gibi birçok TLS kitaplığıyla çalışabiliyor. Daha fazla bilgi için bkz. Azure IoT C SDK.

  1. C örnekleri iotedge_downstream_device_sample Azure IoT cihaz SDK'sı'sı'nden bir uygulama edinin.
  2. Readme.md dosyasını gözden geçirerek örneği çalıştırmak için tüm önkoşullara sahip readme.md olun.
  3. iotedge_downstream_device_sample.c dosyasında connectionString'i güncelleştirin ve edge_ca_cert_path güncelleştirin.
  4. Örneği cihazınıza çalıştırma yönergeleri için SDK belgelerine bakın.

C için Azure IoT cihaz SDK'sı, istemciyi ayarlarken CA sertifikası kaydetme seçeneği sağlar. Bu işlem sertifikayı herhangi bir yere yüklemez, bellekte sertifikanın dize biçimini kullanır. Kaydedilen sertifika, bağlantı kurulurken temel TLS yığınına sağlanır.

(void)IoTHubDeviceClient_SetOption(device_handle, OPTION_TRUSTED_CERT, cert_string);

Not

İstemciyi ayarlarken CA sertifikası kaydetme yöntemi, yönetilen bir paket veya kitaplık kullanıyorsanız değişebilir. Örneğin, Arduino IDE tabanlı kitaplık işlemi kullanmak yerine CA sertifikasını global certs.c dosyasında tanımlanan bir sertifika dizisine eklemeyi IoTHubDeviceClient_LL_SetOption gerektirir.

Diğer Windows, OpenSSL veya başka bir TLS kitaplığını kullanmadıysanız SDK varsayılan olarak Schannel'i kullanır. Schannel'in çalışması için, IoT Edge CA sertifikası, işlemi kullanılarak ayarlanmaz Windows sertifika deposuna IoTHubDeviceClient_SetOption yüklenmeli.

Java

Bu bölümde, bir Azure IoT Java cihaz istemcisini bir azure ağ geçidine bağlamak için IoT Edge tanıt sunulmaktadır.

  1. Java örnekleri için Azure IoT cihaz SDK'sı'nden Send-event örneğini alın.
  2. Readme.md dosyasını gözden geçirerek örneği çalıştırmak için tüm önkoşullara sahip readme.md olun.
  3. Örneği cihazınıza çalıştırma yönergeleri için SDK belgelerine bakın.

Python

Bu bölümde, Azure IoT Python cihaz istemcisini bir azure ağ geçidine bağlamak için IoT Edge tanıt sunulmaktadır.

  1. Python için Azure IoT send_message_downstream SDK'sındanörnek için örnek alın.
  2. ve IOTHUB_DEVICE_CONNECTION_STRING ortam IOTEDGE_ROOT_CA_CERT_PATH değişkenlerini Python betik açıklamalarında belirtilen şekilde ayarlayın.
  3. Örneği cihazınıza çalıştırma hakkında ek yönergeler için SDK belgelerine bakın.

Ağ geçidi bağlantısını test edin

Aşağı akış cihazında bu örnek komutu kullanarak ağ geçidi cihazına bağlanıp bağlanamayalarını test edin:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Bu komut, MQTTS üzerinden bağlantıları test eder (bağlantı noktası 8883). Farklı bir protokol kullanıyorsanız AMQPS (5671) veya HTTPS (433) için gerekli olan komutu ayarlayın

Zincirde yer alan tüm sertifikalar hakkında bilgiler de dahil olmak üzere bu komutun çıkışı uzun olabilir. Bağlantınız başarılı olursa veya gibi bir Verification: OK satırla karşınıza Verify return code: 0 (ok) olur.

Ağ geçidi bağlantısını doğrulama

Ağ geçidi bağlantısı sorunlarını giderme

Yaprak cihazınızın ağ geçidi cihazıyla aralıklı bağlantısı varsa, çözüm için aşağıdaki adımları deneyin.

  1. Bağlantı dizesinde yer alan ağ geçidi ana bilgisayar adı, ağ geçidi cihazında IoT Edge konak adı değeriyle aynı mı?
  2. Ağ geçidi ana bilgisayar adı bir IP Adresine çözümlenebilir mi? Aralıklı bağlantıları DNS kullanarak veya yaprak cihaza bir konak dosyası girişi ekleyerek çözebilirsiniz.
  3. Güvenlik duvarında iletişim bağlantı noktaları açık mı? Kullanılan protokolü temel alan iletişim (MQTTS:8883/AMQPS:5671/HTTPS:433) aşağı akış cihazı ile saydam akış IoT Edge.

Sonraki adımlar

Çevrimdışı IoT Edge aşağı akış cihazlarına nasıl genişletebilirsiniz?