Öğretici: Azure IoT Edge için Güvenli Aktarım Sunucusu üzerinden kaydı yapılandırma
Şunlar için geçerlidir: IoT Edge 1.5 IoT Edge 1.4
Önemli
IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.
Azure IoT Edge ile, x509 sertifikalarını yönetmek için cihazlarınızı Güvenli Aktarım Üzerinden Kayıt (EST) sunucusu kullanacak şekilde yapılandırabilirsiniz.
Bu öğreticide test EST sunucusu barındırma ve x509 sertifikalarının kaydı ve yenilenmesi için ioT Edge cihazı yapılandırma adımları açıklanmıştır. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Test EST sunucusu oluşturma ve barındırma
- DPS grup kaydını yapılandırma
- Cihazı yapılandırma
Önkoşullar
- En son Azure IoT Edge çalışma zamanının yüklü olduğu mevcut bir IoT Edge cihazı. Test cihazı oluşturmanız gerekiyorsa Hızlı Başlangıç: İlk IoT Edge modülünüzü bir sanal Linux cihazına dağıtma işlemini tamamlayın.
- IoT Edge cihazınız IÇIN EST desteği için Azure IoT Edge çalışma zamanı 1.2 veya üzeri gerekir. EST sertifika yenilemesi için Azure IoT Edge çalışma zamanı 1.3 veya üzeri gereklidir.
- IoT Hub'a bağlı IoT Hub Cihaz Sağlama Hizmeti (DPS). DPS'yi yapılandırma hakkında bilgi için bkz . Hızlı Başlangıç: Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama.
Güvenli Aktarım üzerinden kayıt nedir?
Güvenli Aktarım üzerinden kayıt (EST), x.509 sertifikalarının verilmesini otomatik hale getiren bir şifreleme protokolüdür. Bir Sertifika Yetkilisi (CA) ile ilişkilendirilmiş istemci sertifikalarına ihtiyaç duyan IoT Edge gibi ortak anahtar altyapısı (PKI) istemcileri için kullanılır. EST, el ile sertifika yönetimi gereksiniminin yerini alır ve bu da riskli ve hataya açık olabilir.
EST sunucusu
Sertifika verme ve yenileme için cihazlarınız için erişilebilir bir EST sunucusuna ihtiyacınız vardır.
Önemli
Kurumsal sınıf çözümler için şunları göz önünde bulundurun: GlobalSign IoT Edge Kaydı veya DigiCert IoT Aygıt Yöneticisi.
Test ve geliştirme için bir test EST sunucusu kullanabilirsiniz. Bu öğreticide bir test EST sunucusu oluşturacağız.
Cihazda EST sunucusunu çalıştırma
Hızlı bir şekilde başlamak için bu öğreticide, IoT Edge cihazında yerel olarak bir kapsayıcıda basit bir EST sunucusu dağıtma adımları gösterilmektedir. Bu yöntem, denemek için en basit yaklaşımdır.
Dockerfile, adlılibest
bir Cisco kitaplığı olan Ubuntu 18.04'ü ve örnek sunucu kodunu kullanır. Aşağıdaki ayar ile yapılandırılır ve değiştirebilirsiniz:
- Kök CA 20 yıl geçerlidir
- EST sunucu sertifikası 10 yıl geçerlidir
- EST yenilemesini test etmek için sertifika varsayılan günlerini 1 olarak ayarlayın
- EST sunucusu bir kapsayıcıdaki IoT Edge cihazında yerel olarak çalışır
Dikkat
Bu Dockerfile dosyasını üretimde kullanmayın.
Örneğin IoT Edge'i yüklediğiniz SSH kullanarak cihaza bağlanın.
(büyük/küçük harfe duyarlı) adlı
Dockerfile
bir dosya oluşturun ve sık kullandığınız metin düzenleyicisini kullanarak örnek içeriği ekleyin.İpucu
EST sunucunuzu Azure Container Instance'da barındırmak istiyorsanız, EST sunucunuzun DNS adı olarak değiştirin
myestserver.westus.azurecontainer.io
. DNS adı seçerken, Azure Container örneğinin DNS etiketinin en az beş karakter uzunluğunda olması gerektiğini unutmayın.# DO NOT USE IN PRODUCTION - Use only for testing # FROM ubuntu:18.04 RUN apt update && apt install -y apache2-utils git openssl libssl-dev build-essential && \ git clone https://github.com/cisco/libest.git && cd libest && \ ./configure --disable-safec && make install && \ rm -rf /src && apt remove --quiet -y libssl-dev build-essential && \ apt autoremove -y && apt clean -y && apt autoclean -y && \ rm -rf /var/lib/apt /tmp/* /var/tmp/* WORKDIR /libest/example/server/ # Setting the root CA expiration to 20 years RUN sed -i "s|-days 365|-days 7300 |g" ./createCA.sh ## If you want to host your EST server remotely (for example, an Azure Container Instance), ## change myestserver.westus.azurecontainer.io to the fully qualified DNS name of your EST server ## OR, change the IP address ## and uncomment the corresponding line. # RUN sed -i "s|DNS.2 = ip6-localhost|DNS.2 = myestserver.westus.azurecontainer.io|g" ./ext.cnf # RUN sed -i "s|IP.2 = ::1|IP.2 = <YOUR EST SERVER IP ADDRESS>|g" ./ext.cnf # Set EST server certificate to be valid for 10 years RUN sed -i "s|-keyout \$EST_SERVER_PRIVKEY -subj|-keyout \$EST_SERVER_PRIVKEY -days 7300 -subj |g" ./createCA.sh # Create the CA RUN echo 1 | ./createCA.sh # Set cert default-days to 1 to show EST renewal RUN sed -i "s|default_days = 365|default_days = 1 |g" ./estExampleCA.cnf # The EST server listens on port 8085 by default # Uncomment to change the port to 443 or something else. If changed, EXPOSE that port instead of 8085. # RUN sed -i "s|estserver -c|estserver -p 443 -c |g" ./runserver.sh EXPOSE 8085 CMD ./runserver.sh
öğesini
Dockerfile
içeren dizinde, örnek Dockerfile dosyasından görüntünüzü derleyin.sudo docker build . --tag est
Kapsayıcıyı başlatın ve kapsayıcının 8085 numaralı bağlantı noktasını konakta 8085 numaralı bağlantı noktasına kullanıma sunun.
sudo docker run -d -p 8085:8085 est
Artık EST sunucunuz çalışıyor ve 8085 numaralı bağlantı noktası üzerinden
localhost
erişilebilir. Sunucu sertifikasını görmek için bir komut çalıştırarak kullanılabilir olduğunu doğrulayın.openssl s_client -showcerts -connect localhost:8085
Çıkışın ortasında görmeniz
-----BEGIN CERTIFICATE-----
gerekir. Sertifikanın alınması, sunucunun ulaşılabilir olduğunu ve sertifikasını sunabildiğini doğrular.
İpucu
Bu kapsayıcıyı bulutta çalıştırmak için görüntüyü derleyin ve görüntüyü Azure Container Registry'ye gönderin. Ardından hızlı başlangıcı izleyerek Azure Container Instance'a dağıtın.
CA sertifikalarını indirme
Her cihaz, bir cihaz kimliği sertifikasıyla ilişkili Sertifika Yetkilisi (CA) sertifikası gerektirir.
IoT Edge cihazında
/var/aziot/certs
, yoksa dizini oluşturun ve dizini bu dizinle değiştirin.# If the certificate directory doen't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs # Change directory to /var/aziot/certs cd /var/aziot/certs
CA sertifikasını EST sunucusundan dizinine alın ve olarak adlandırın
/var/aziot/certs
cacert.crt.pem
.openssl s_client -showcerts -verify 5 -connect localhost:8085 < /dev/null | sudo awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".pem"; print >out}' && sudo cp cert2.pem cacert.crt.pem
Sertifikalar, anahtar hizmet kullanıcısı aziotcs'e ait olmalıdır. Tüm sertifika dosyaları için sahipliği aziotcs olarak ayarlayın ve izinleri ayarlayın. Sertifika sahipliği ve izinleri hakkında daha fazla bilgi için bkz . İzin gereksinimleri.
# Give aziotcs ownership to certificates sudo chown -R aziotcs:aziotcs /var/aziot/certs # Read and write for aziotcs, read-only for others sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
DPS kullanarak IoT Edge cihazı sağlama
Cihaz Sağlama Hizmeti'ni kullanmak, IoT Edge'de bir EST sunucusundan sertifikaları otomatik olarak vermenizi ve yenilemenizi sağlar. Öğretici EST sunucusunu kullanırken kimlik sertifikalarının süresi bir gün içinde dolar ve sertifikanın süresi her dolduğunda parmak izi IoT Hub'da el ile güncelleştirilmelidir. Kayıt grubuyla DPS CA kimlik doğrulaması, cihaz kimliği sertifikalarının el ile herhangi bir adım olmadan yenilenmesini sağlar.
CA sertifikasını DPS'ye yükleme
IoT Hub'a bağlı bir Cihaz Sağlama Hizmetiniz yoksa bkz . Hızlı Başlangıç: Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama.
Dosyayı cihazınızdan
cacert.crt.pem
geliştirme bilgisayarınız gibi Azure portalına erişimi olan bir bilgisayara aktarın. Sertifikayı aktarmanın kolay bir yolu cihazınıza uzaktan bağlanmak, komutunucat /var/aziot/certs/cacert.crt.pem
kullanarak sertifikayı görüntülemek, çıkışın tamamını kopyalamak ve içeriği geliştirme bilgisayarınızdaki yeni bir dosyaya yapıştırmaktır.Azure portalında IoT Hub Cihazı Sağlama Hizmeti örneğine gidin.
Ayarlar'ın altında Sertifikalar'ı ve ardından +Ekle'yi seçin.
Ayar Value Sertifika adı CA sertifikası için kolay bir ad sağlayın Sertifika .pem veya .cer dosyası cacert.crt.pem
EST sunucusundan adresine gidinSertifika durumunu karşıya yüklemede doğrulandı olarak ayarlama Onay kutusunu seçin Kaydet'i seçin.
Kayıt grubu oluşturma
Azure portalında IoT Hub Cihazı Sağlama Hizmeti örneğine gidin.
Ayarlar'ın altında Kayıtları yönet'i seçin.
Kayıt grubu ekle'yi seçin ve kaydı yapılandırmak için aşağıdaki adımları tamamlayın.
Kayıt + sağlama sekmesinde aşağıdaki ayarları seçin:
Ayar Value Kanıtlama mekanizması Bu Cihaz Sağlama Hizmeti örneğine yüklenen X.509 sertifikalarını seçin Birincil sertifika Açılan listeden sertifikanızı seçin Grup adı Bu grup kaydı için kolay bir ad sağlayın Sağlama durumu Bu kaydı etkinleştir onay kutusunu seçin IoT hub'ları sekmesinde, listeden IoT Hub'ınızı seçin.
Cihaz ayarları sekmesinde Sağlanan cihazlarda IoT Edge'i etkinleştir onay kutusunu seçin.
Diğer ayarlar öğreticiyle ilgili değildir. Varsayılan ayarları kabul edebilirsiniz.
Gözden geçir ve oluştur’u seçin.
Artık cihaz için bir kayıt var olduğuna göre, IoT Edge çalışma zamanı bağlı IoT Hub için cihaz sertifikalarını otomatik olarak yönetebilir.
IoT Edge cihazını yapılandırma
IoT Edge cihazında IoT Edge yapılandırma dosyasını, EST sunucusundan cihaz sertifikalarını kullanacak şekilde güncelleştirin.
Düzenleyici kullanarak IoT Edge yapılandırma dosyasını açın. Örneğin, dosyayı açmak için düzenleyiciyi
/etc/aziot/config.toml
kullanınnano
.sudo nano /etc/aziot/config.toml
Yapılandırma dosyasına aşağıdaki bölümleri ekleyin veya değiştirin. Bu yapılandırma ayarları, cihaz sertifikasını EST sunucusundan almak için başlangıçta kullanıcı adı ve parola kimlik doğrulamasını kullanır. Cihaz sertifikası, gelecekteki sertifika yenilemeleri için EST sunucusunda kimlik doğrulaması yapmak için kullanılır.
Aşağıdaki yer tutucu metni değiştirin:
<DPS-ID-SCOPE>
Kayıtlı cihazı içeren IoT Hub'a bağlı DPS'nin Kimlik Kapsamı vemyiotedgedevice
Azure IoT Hub'da kayıtlı cihaz kimliği ile. Kimlik Kapsamı değerini DPS Genel Bakış sayfasında bulabilirsiniz.# DPS provisioning with X.509 certificate # Replace with ID Scope from your DPS [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "<DPS-ID-SCOPE>" [provisioning.attestation] method = "x509" registration_id = "myiotedgedevice" [provisioning.attestation.identity_cert] method = "est" common_name = "myiotedgedevice" # Auto renewal settings for the identity cert # Available only from IoT Edge 1.3 and above [provisioning.attestation.identity_cert.auto_renew] rotate_key = false threshold = "80%" retry = "4%" # Trusted root CA certificate in the global EST options # Optional if the EST server's TLS certificate is already trusted by the system's CA certificates. [cert_issuance.est] trusted_certs = [ "file:///var/aziot/certs/cacert.crt.pem", ] # The default username and password for libest # Used for initial authentication to EST server # # Not recommended for production [cert_issuance.est.auth] username = "estuser" password = "estpwd" [cert_issuance.est.urls] default = "https://localhost:8085/.well-known/est"
Not
Bu örnekte IoT Edge, sertifika alması gereken her durumda EST sunucusunda kimlik doğrulaması yapmak için kullanıcı adı ve parola kullanır. Bu yöntem üretimde önerilmez, çünkü 1) gizli diziyi düz metin olarak depolamayı gerektirir ve 2) IoT Edge de EST sunucusunda kimlik doğrulaması yapmak için bir kimlik sertifikası kullanmalıdır. Üretim için değiştirmek için:
- DpS için önerilen yaklaşıma benzer şekilde üretim sırasında cihaza depolanabilen uzun ömürlü bootstrap sertifikalarını kullanmayı göz önünde bulundurun. EST sunucusu için bootstrap sertifikasının nasıl yapılandırıldığını görmek için bkz . EST aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Cihazın Kimliğini Doğrulama.
- Yukarıdaki sağlama sertifikası otomatik yenileme yapılandırmasıyla aynı söz dizimini kullanarak yapılandırın
[cert_issuance.est.identity_auto_renew]
.
Bu şekilde IoT Edge sertifika hizmeti, EST sunucusuyla ilk kimlik doğrulaması için önyükleme sertifikasını kullanır ve aynı sunucuya gelecek EST istekleri için bir kimlik sertifikası ister. Herhangi bir nedenle, YENILEMEden önce EST kimlik sertifikasının süresi dolarsa, IoT Edge önyükleme sertifikasını kullanmaya geri döner.
Yeni ayarları uygulamak için komutunu çalıştırın
sudo iotedge config apply
.IoT Edge cihaz yapılandırmanızı doğrulamak için komutunu çalıştırın
sudo iotedge check
. Tüm yapılandırma denetimleri başarılı olmalıdır. Bu öğreticide üretime hazır olma hatalarını ve uyarılarını, DNS sunucusu uyarılarını ve bağlantı denetimlerini yoksayabilirsiniz.IoT Hub'da cihazınıza gidin. Sertifika parmak izleri, DPS ve EST sunucusu kullanılarak cihaza otomatik olarak eklendi.
Not
Yeni bir IoT Edge cihazı oluşturduğunuzda durum kodu
417 -- The device's deployment configuration is not set in the Azure portal.
Bu durum normaldir ve cihazın modül dağıtımı almaya hazır olduğu anlamına gelir.
Sertifika yenilemeyi test et
Mevcut sertifikaları ve anahtarları cihazdan kaldırıp Ardından IoT Edge yapılandırmasını uygulayarak cihaz kimliği sertifikalarını hemen yeniden oluşturabilirsiniz. IoT Edge eksik dosyaları algılar ve yeni sertifikalar istemektedir.
IoT Edge cihazında IoT Edge çalışma zamanını durdurun.
sudo iotedge system stop
Mevcut sertifikaları ve anahtarları silin.
sudo sh -c "rm /var/lib/aziot/certd/certs/*" sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
Sertifikaları yenilemek için IoT Edge yapılandırmasını uygulayın.
sudo iotedge config apply
Çalışma zamanının başlatılması için birkaç dakika beklemeniz gerekebilir.
IoT Hub'da cihazınıza gidin. Sertifika parmak izleri güncelleştirildi.
komutunu
sudo ls -l /var/lib/aziot/certd/certs
kullanarak sertifika dosyalarını listeleyin. Cihaz sertifika dosyaları için son oluşturma tarihlerini görmeniz gerekir.openssl
Yeni sertifika içeriğini denetlemek için komutunu kullanın. Örneğin:sudo openssl x509 -in /var/lib/aziot/certd/certs/deviceid-bd732105ef89cf8edd2606a5309c8a26b7b5599a4e124a0fe6199b6b2f60e655.cer -text -noout
Cihaz sertifikası dosya adını (.cer) cihazınızın sertifika dosyasıyla değiştirin.
Sertifika Geçerlilik tarihi aralığının değiştiğini fark etmelisiniz.
Sertifika yenilemeyi test etmenin isteğe bağlı diğer yolları aşağıdadır. Bu denetimler, Süresi dolduğunda veya eksik olduğunda IoT Edge'in EST sunucusundan sertifikaları nasıl yenilediklerini gösterir. Her test sonrasında Azure portalında yeni parmak izlerini doğrulayabilir ve komutunu kullanarak yeni sertifikayı doğrulayabilirsiniz openssl
.
- Sertifikanın süresinin dolması için bir gün beklemeyi deneyin. Test EST sunucusu, bir gün sonra süresi dolan sertifikalar oluşturacak şekilde yapılandırılmıştır. IoT Edge sertifikayı otomatik olarak yeniler.
- içindeki otomatik yenileme kümesinin
config.toml
yüzdesinithreshold
ayarlamayı deneyin (şu anda örnek yapılandırmada %80 olarak ayarlanmıştır). Örneğin, bunu10%
olarak ayarlayın ve yaklaşık 2 saatte bir sertifika yenilemesini gözlemleyin. - değerini bir tamsayıya ve ardından
m
(dakika) ayarlamayıthreshold
deneyin. Örneğin, sertifikayı60m
olarak ayarlayın ve süresi dolmadan 1 saat önce sertifika yenilemesini gözlemleyin.
Kaynakları temizleme
Bu öğreticide oluşturduğunuz kaynakları ve yapılandırmaları tutabilir ve yeniden kullanabilirsiniz. Aksi takdirde, ücretlerden kaçınmak için bu makalede kullandığınız yerel yapılandırmaları ve Azure kaynaklarını silebilirsiniz.
Azure kaynaklarını silme
Azure kaynaklarını ve kaynak gruplarını silme işlemi geri alınamaz. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT hub'ını tutmak istediğiniz kaynakların yer aldığı mevcut bir kaynak grubunda oluşturduysanız, kaynak grubunu değil yalnızca IoT hub kaynağını silin.
Kaynakları silmek için:
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.
Kaynak grubunuzun içerdiği kaynakların listesini gözden geçirin. Tümünü silmek isterseniz Kaynak grubunu sil'i seçebilirsiniz. Yalnızca bazılarını silmek istiyorsanız, her kaynağı seçerek tek tek silebilirsiniz.
Sonraki adımlar
- Est sunucusunu kullanarak Edge CA sertifikaları vermek için örnek yapılandırmaya bakın.
- Est sunucusuna kimlik doğrulamasını önyüklemek için kullanıcı adı ve parola kullanılması üretim için önerilmez. Bunun yerine, DPS için önerilen yaklaşıma benzer şekilde üretim sırasında cihaza depolanabilen uzun süreli önyükleme sertifikalarını kullanmayı göz önünde bulundurun. EST sunucusu için bootstrap sertifikasının nasıl yapılandırıldığını görmek için bkz . EST aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Cihazın Kimliğini Doğrulama.
- EST sunucusu, hiyerarşideki tüm cihazlar için sertifika vermek için de kullanılabilir. ISA-95 gereksinimleriniz olup olmadığınıza bağlı olarak, her katmanda bir tane olan bir EST sunucuları zinciri çalıştırmanız veya istekleri iletmek için API proxy modülünü kullanmanız gerekebilir. Daha fazla bilgi edinmek için Kevin'in bloguna bakın.
- Kurumsal sınıf çözümler için şunları göz önünde bulundurun: GlobalSign IoT Edge Kaydı, DigiCert IoT Aygıt Yöneticisi ve Keytos EZCA.
- Sertifikalar hakkında daha fazla bilgi edinmek için bkz . Azure IoT Edge'in sertifikaları nasıl kullandığını anlama.