Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
IoT Edge 1.6
Önemli
IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
Azure IoT Edge kullanarak, cihazlarınızı x509 sertifikalarını yönetmek için Güvenli Aktarım Üzerinden Kayıt (EST) sunucusu kullanacak şekilde yapılandırabilirsiniz.
Bu öğretici, test EST sunucusu barındırma ve cihaz kimliği x509 sertifikalarının kaydı ve yenilenmesi için bir IoT Edge cihazı yapılandırma konusunda size yol gösterir. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Cihaz kimliği sertifikaları için test EST sunucusu oluşturma ve barındırma
- DPS grup kaydını yapılandırma
- Cihazı yapılandırma
Önkoşullar
Başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:
- Mevcut bir IoT Edge cihazı, en yeni Azure IoT Edge çalışma zamanı yüklü. Test cihazı oluşturmanız gerekiyorsa Quickstart: İlk IoT Edge modülünüzü bir sanal Linux cihazına dağıtma 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 gerekir.
- IoT Hub'a bağlı olan IoT Hub Cihaz Sağlama Hizmeti (DPS). DPS'yi yapılandırma hakkında bilgi için bkz. Quickstart: Azure portalıyla IoT Hub Cihaz Sağlama Hizmeti'ni ayarlama.
Not
IoT Edge, üretim için önerilen otomatik cihaz kimliği sertifikası verme ve yenileme işlemlerinde EST ve IoT Edge'i kullanmak isteyenler için DPS CA tabanlı bir kayıt grubunun parçası olarak tanımlanmalıdır. IoT Hub ile el ile X.509 sağlama ve bireysel kayıt ile DPS dahil olmak üzere diğer sağlama yöntemleri, otomatik cihaz kimliği sertifikası yenilemeyi desteklemez.
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. Sertifika Yetkilisi (CA) ile ilişkili istemci sertifikalarına ihtiyaç duyan IoT Edge örnekleri 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ın bir EST sunucusuna erişmesi gerekir.
Önemli
Üretim için GlobalSign IoT Edge Enroll veya DigiCert IoT Aygıt Yöneticisi kullanın.
GlobalSign'ın EST hizmetini kullanma hakkında daha fazla bilgi için bkz. Automatic IoT Edge Sertifika Yönetimi ile GlobalSign EST.
Test ve geliştirme için bir test EST sunucusu kullanabilirsiniz. Bu öğreticide bir test EST sunucusu oluşturacaksınız.
Cihazda EST sunucusunu çalıştırma
Hızlı bir şekilde başlamak için bu öğreticide, basit bir EST sunucusunu IoT Edge cihazında yerel olarak bir kapsayıcıya dağıtma adımları gösterilmektedir. Bu yöntem, denemek için en basit yaklaşımdır.
Dockerfile, adlı libestbir Cisco kitaplığı olan Ubuntu 18.04'ü ve örnek sunucu kodunu kullanır. Değiştirebileceğiniz aşağıdaki ayarlarla yapılandırılır:
- 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, kapsayıcıdaki IoT Edge cihazında yerel olarak çalışır
Dikkat
Bu Dockerfile dosyasını üretimde kullanmayın.
Cihaza bağlanın, örneğin IoT Edge yüklediğiniz SSH'yi kullanın.
(büyük/küçük harfe duyarlı) adlı
Dockerfilebir dosya oluşturun ve sık kullandığınız metin düzenleyicisini kullanarak örnek içeriği ekleyin.İpucu
EST sunucunuzu Azure Kapsayıcı Örneğinde barındırmak istiyorsanız,
myestserver.westus.azurecontainer.iodeğerini EST sunucunuzun DNS adıyla değiştirin. DNS adı seçerken, Azure Kapsayıcı ö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 use the EST server to issue Edge CA certificates, ## uncomment the RUN sed section after this comment block. ## The sed commands add special extensions for Edge CA certificates. For more information see: ## https://learn.microsoft.com/azure/iot-edge/how-to-manage-device-certificates?tabs=windows#edge-ca-in-production ## ## IMPORTANT: ## DO NOT issue Edge CA certificates in production. ## For production, use digital certificates from a trusted CA. ## See https://techcommunity.microsoft.com/blog/iotblog/automatic-iot-edge-certificate-management-with-globalsign-est/4384385 ## ## Using EST for Edge CA is for demonstration and learning purposes only. ## # RUN sed -i "s|basicConstraints=CA:FALSE|basicConstraints=critical,CA:TRUE,pathlen:0|g" ./estExampleCA.cnf && \ # sed -i "s|keyUsage=digitalSignature|keyUsage=critical,digitalSignature,keyCertSign|g" ./estExampleCA.cnf && \ # sed -i "s|authorityKeyIdentifier=keyid|authorityKeyIdentifier=keyid:always|g" ./estExampleCA.cnf ## 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 lines. # 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
Dockerfileiçeren dizinde, örnek Dockerfile dosyasından görüntünüzü derleyin.sudo docker build . --tag estKapsayıcıyı başlatın ve kapsayıcının 8085 numaralı bağlantı noktasını konaktaki 8085 numaralı bağlantı noktasına yönlendirin.
sudo docker run -d -p 8085:8085 estArtık EST sunucunuz çalışıyor ve 8085 numaralı bağlantı noktası üzerinden
localhosteriş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Çıktının ortasında -----BEGIN CERTIFICATE----- görmeniz 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 imajı oluşturun ve imajı Azure Container Registry'e gönderin. Ardından quickstart'ı izleyerek Azure Container Instance adresine 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 dizini yoksa oluşturun ve bu dizine geçin.
# If the certificate directory doesn'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/certsCA sertifikasını EST sunucusundan /var/aziot/certs dizinine alın ve olarak adlandırın
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.pemAnahtar hizmet kullanıcısı aziotcs sertifikaların sahibi 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 kullanarak, IoT Edge'da bir EST sunucusundan sertifikaları otomatik olarak verebilir ve yenileyebilirsiniz. Öğretici EST sunucusunu kullandığınızda kimlik sertifikalarının süresi bir gün içinde dolar. Sertifikanın süresi her dolduğunda, IoT Hub ile manuel sağlama yapmanız pratik değildir çünkü parmak izini IoT Hub'da el ile güncelleştirmeniz gerekir. 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 bağlı bir Cihaz Sağlama Hizmetiniz yoksa bkz. Quickstart: Azure portalıyla IoT Hub Cihaz Sağlama Hizmeti'ni ayarlama.
cacert.crt.pem dosyasını cihazınızdan 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, komutunu
cat /var/aziot/certs/cacert.crt.pemkullanarak 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.
Ayarlar Değer Sertifika adı CA sertifikası için kolay bir ad girin. Sertifika .pem veya .cer dosyası cacert.crt.pemadresine EST sunucusunu kullanarak göz atın.Sertifika durumunu yükleme sırasında doğrulandı olarak ayarlayın Onay kutusunu seçin. Kaydetseçeneğini 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:
Ayarlar Değer 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 dostça 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.
Device settings sekmesinde, sağlanan cihazlarda Enable IoT Edge onay kutusunu seçin. Diğer ayarlar öğreticiyle ilgili değildir. Varsayılan ayarları kabul edebilirsiniz.
Seçin, gözden geçir ve oluştur.
Artık cihaz için bir kayıt bulunduğuna göre, IoT Edge çalışma zamanı bağlı IoT hub'ına yönelik cihaz sertifikalarını otomatik olarak yönetebilir.
IoT Edge cihazı yapılandırma
IoT Edge cihazda, 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,
nanokullanın:sudo nano /etc/aziot/config.tomlYapılandırma dosyasına aşağıdaki bölümleri ekleyin veya değiştirin. Bu yapılandırma ayarları başlangıçta cihaz sertifikasını EST sunucusundan almak için kullanıcı adı ve parola kimlik doğrulaması kullanır. Cihaz sertifikası, gelecekteki sertifika yenilemeleri için EST sunucusunda kimlik doğrulaması yapar.
Aşağıdaki yer tutucu metni değiştirin:
<DPS-ID-SCOPE>, kayıtlı cihazı içeren IoT hub'ına bağlı DPS'nin ID Kapsamı vemyiotedgedeviceAzure IoT Hub kayıtlı cihaz kimliğiyle. 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 her sertifika alması gerektiğinde EST sunucusunda kimlik doğrulaması yapmak için kullanıcı adı ve parola kullanır. Bu yöntem, bir gizli diziyi düz metin olarak depolamayı gerektirdiği için üretimde önerilmez. Ayrıca, IoT Edge EST sunucusunda kimlik doğrulaması yapmak için bir kimlik sertifikası kullanmalıdır. Üretim için değiştirmek:
- DpS için önerilen yaklaşıma benzer şekilde üretim sırasında cihazda depoladığınız uzun ömürlü ö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. ESTER aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Bir Cihazı Doğrulama.
-
[cert_issuance.est.identity_auto_renew]önceki örnekte gösterilen sağlama sertifikası otomatik yenileme yapılandırması ile aynı sözdizimini kullanarak yapılandırın.
Bu şekilde, IoT Edge sertifika hizmeti EST sunucusuyla ilk kimlik doğrulaması için bootstrap sertifikasını kullanır ve aynı sunucuya gelecek EST istekleri için bir kimlik sertifikası ister. Herhangi bir nedenle, yenileme yapılmadan ö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
sudo iotedge checkçalıştırın. Tüm yapılandırma denetimleri başarılı olmalıdır. Bu öğreticide üretime hazırlık 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 eklenir.
Not
Yeni bir IoT Edge cihazı oluşturduğunuzda, bu cihazın durum kodu
417 -- The device's deployment configuration isn't set in the Azure portal.görüntülenir. 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 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 isteyebilir.
IoT Edge cihazda IoT Edge çalışma zamanını durdurun.
sudo iotedge system stopMevcut 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ştirilir.
komutunu
sudo ls -l /var/lib/aziot/certd/certskullanarak sertifika dosyalarını listeleyin. Cihaz sertifika dosyaları için son oluşturma tarihlerini görmeniz gerekir.opensslYeni 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 -nooutCihaz 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.
Aşağıdaki isteğe bağlı testler, IoT Edge süresi dolduğunda veya eksik olduğunda EST sunucusundan sertifikaları nasıl yenilediklerini gösterir. Her test sonrasında, Azure portalında yeni parmak izlerini doğrulayabilir ve yeni sertifikayı doğrulamak için openssl komutunu kullanabilirsiniz.
- Sertifikanın süresinin dolmasını bir gün bekleyin. 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.
-
thresholdiçinde otomatik yenileme kümesinin yüzdesini ayarlayın (şu anda örnek yapılandırmada 80% olarak ayarlanmıştır). Örneğin, sertifikayı10%olarak ayarlayın ve yaklaşık 2 saatte bir sertifika yenilemesini gözlemleyin. - değerini
thresholdbir tamsayıya ve ardındanm(dakika) ayarlayın. Örneğin, sertifikayı60molarak 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ı silin.
Azure kaynaklarını silme
Azure kaynakları ve kaynak gruplarını silme işlemini geri alamazsınız. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT Hub tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubunda oluşturduysanız, kaynak grubunu değil yalnızca IoT Hub kaynağı silin.
Kaynakları silmek için:
- Azure portalında oturum açın ve ardından Kaynak grupları'i 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, tek tek silmek için her kaynağı seçin.
Sonraki adımlar
- Edge CA sertifikaları sağlamak için EST sunucusunu kullanma hakkında bilgi edinmek üzere ö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 cihazda depolanabilen uzun süreli önyükleme sertifikalarını kullanmayı göz önünde bulundurun. EST sunucusu için bootstrap sertifikasını yapılandırma hakkında bilgi için bkz. ESTER aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Bir Cihazı Doğrulama.
- EST sunucusu, hiyerarşideki tüm cihazlar için sertifika vermek için de kullanılabilir. ISA-95 gereksinimleriniz olup olmadığına bağlı olarak, her katmanda bir tane olan bir EST sunucuları zinciri çalıştırmak veya istekleri iletmek için API proxy modülünü kullanmak gerekebilir. Daha fazla bilgi için Kevin'in bloguna bakın.
- Kurumsal sınıf çözümler için şunları göz önünde bulundurun: GlobalSign IoT Edge Kaydolma, DigiCert IoT Aygıt Yöneticisi ve Keytos EZCA.
- Sertifikalar hakkında daha fazla bilgi için bkz. Azure IoT Edge in sertifikaları nasıl kullandığını anlama.