Kurz: Konfigurace registrace přes zabezpečený transportní server pro Azure IoT Edge
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Pomocí Azure IoT Edge můžete nakonfigurovat svá zařízení tak, aby ke správě certifikátů x509 používala server EST (Secure Transport).
Tento kurz vás provede hostováním testovacího serveru EST a konfigurací zařízení IoT Edge pro registraci a obnovení certifikátů x509. V tomto kurzu se naučíte:
- Vytvoření a hostování testovacího serveru EST
- Konfigurace skupinové registrace DPS
- Konfigurace zařízení
Požadavky
- Existující zařízení IoT Edge s nainstalovaným nejnovějším modulem runtime Azure IoT Edge. Pokud potřebujete vytvořit testovací zařízení, dokončete rychlý start: Nasaďte svůj první modul IoT Edge do virtuálního zařízení s Linuxem.
- Vaše zařízení IoT Edge vyžaduje pro podporu EST modul runtime Azure IoT Edge 1.2 nebo novější. Pro prodloužení platnosti certifikátu EST se vyžaduje modul runtime Azure IoT Edge 1.3 nebo novější.
- Služba IoT Hub Device Provisioning (DPS) propojená se službou IoT Hub Informace o konfiguraci SLUŽBY DPS najdete v tématu Rychlý start: Nastavení služby IoT Hub Device Provisioning pomocí webu Azure Portal.
Poznámka:
Pokud chcete používat EST a IoT Edge k automatickému vystavování a obnovování certifikátů identit zařízení, které se doporučuje pro produkční prostředí, musí IoT Edge zřídit jako součást skupiny registrací na základě certifikační autority DPS. Jiné metody zřizování, včetně ručního zřizování X.509 se službou IoT Hub a DPS s jednotlivými registracemi nepodporují automatické prodlužování platnosti certifikátů identity zařízení.
Co je registrace přes zabezpečený přenos?
Registrace přes protokol EST (Secure Transport) je kryptografický protokol, který automatizuje vystavování certifikátů x.509. Používá se pro klienty infrastruktury veřejných klíčů (PKI), jako je IoT Edge, které potřebují klientské certifikáty přidružené k certifikační autoritě (CA). EST nahrazuje potřebu ruční správy certifikátů, což může být rizikové a náchylné k chybám.
Server EST
Pro vystavování a prodlužování certifikátů potřebujete server EST přístupný pro vaše zařízení.
Důležité
U řešení na podnikové úrovni zvažte: Registrace GlobalSign IoT Edge nebo DigiCert IoT Správce zařízení.
K testování a vývoji můžete použít testovací server EST. V tomto kurzu vytvoříme testovací server EST.
Spuštění serveru EST na zařízení
Abyste mohli rychle začít, v tomto kurzu se dozvíte, jak nasadit jednoduchý server EST v kontejneru místně na zařízení IoT Edge. Tato metoda je nejjednodušším přístupem k vyzkoušení.
Dockerfile používá Ubuntu 18.04, knihovnu Cisco s názvem libest
a vzorový serverový kód. Je nakonfigurované s následujícím nastavením, které můžete změnit:
- Kořenová certifikační autorita platná po dobu 20 let
- Certifikát serveru EST platný po dobu 10 let
- Nastavení výchozího certifikátu na hodnotu 1 pro otestování obnovení EST
- Server EST běží místně na zařízení IoT Edge v kontejneru.
Upozornění
Nepoužívejte tento soubor Dockerfile v produkčním prostředí.
Připojte se k zařízení, například pomocí SSH, kde jste nainstalovali IoT Edge.
Vytvořte soubor s názvem
Dockerfile
(rozlišují se malá a velká písmena) a pomocí oblíbeného textového editoru přidejte ukázkový obsah.Tip
Pokud chcete hostovat server EST ve službě Azure Container Instance, změňte
myestserver.westus.azurecontainer.io
název DNS vašeho serveru EST. Při výběru názvu DNS mějte na paměti, že popisek DNS pro instanci kontejneru Azure musí mít délku alespoň pět znaků.# 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
V adresáři obsahujícím vaši
Dockerfile
image sestavte z ukázkového souboru Dockerfile.sudo docker build . --tag est
Spusťte kontejner a zpřístupňte port 8085 kontejneru na portu 8085 na hostiteli.
sudo docker run -d -p 8085:8085 est
Server EST je teď spuštěný a je dostupný na
localhost
portu 8085. Spuštěním příkazu ověřte, že je k dispozici, aby se zobrazil certifikát serveru.openssl s_client -showcerts -connect localhost:8085
Měli byste vidět
-----BEGIN CERTIFICATE-----
uprostřed výstupu. Načtení certifikátu ověří, že je server dostupný a může předložit jeho certifikát.
Tip
Pokud chcete tento kontejner spustit v cloudu, sestavte image a nasdílení image do služby Azure Container Registry. Pak postupujte podle rychlého startu a nasaďte ji do služby Azure Container Instance.
Stažení certifikátu certifikační autority
Každé zařízení vyžaduje certifikát certifikační autority (CA), který je přidružený k certifikátu identity zařízení.
Na zařízení IoT Edge vytvořte
/var/aziot/certs
adresář, pokud neexistuje, změňte ho na něj.# 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/certs
Načtěte certifikát certifikační autority ze serveru EST do
/var/aziot/certs
adresáře a pojmenujte hocacert.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
Certifikáty by měly vlastnit klíčové služby aziotcs. Nastavte vlastnictví na aziotcs pro všechny soubory certifikátu a nastavte oprávnění. Další informace o vlastnictví certifikátu a oprávněních najdete v tématu Požadavky na oprávnění.
# 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 {} \;
Zřízení zařízení IoT Edge pomocí DPS
Použití služby Device Provisioning umožňuje automaticky vydávat a obnovovat certifikáty ze serveru EST v IoT Edge. Při použití serveru EST kurzu vyprší platnost certifikátů identity za jeden den, takže ruční zřizování se službou IoT Hub nepraktické, protože při každém vypršení platnosti certifikátu musí být kryptografický otisk v IoT Hubu aktualizován ručně. Ověřování certifikační autority DPS se skupinou registrací umožňuje obnovovat certifikáty identit zařízení bez jakýchkoli ručních kroků.
Nahrání certifikátu certifikační autority do DPS
Pokud nemáte službu Device Provisioning propojenou se službou IoT Hub, přečtěte si rychlý start: Nastavení služby IoT Hub Device Provisioning pomocí webu Azure Portal.
cacert.crt.pem
Přeneste soubor ze zařízení do počítače s přístupem k webu Azure Portal, jako je váš vývojový počítač. Snadný způsob, jak certifikát přenést, je vzdáleně se připojit k vašemu zařízení, zobrazit certifikát pomocí příkazucat /var/aziot/certs/cacert.crt.pem
, zkopírovat celý výstup a vložit obsah do nového souboru na vývojovém počítači.Na webu Azure Portal přejděte do vaší instance služby IoT Hub Device Provisioning.
V části Nastavení vyberte Certifikáty a pak +Přidat.
Nastavení Hodnota Název certifikátu Zadejte popisný název certifikátu certifikační autority. Soubor .pem nebo .cer certifikátu Přejděte na cacert.crt.pem
server EST.Nastavení stavu certifikátu na ověření při nahrání Zaškrtněte políčko Zvolte Uložit.
Vytvoření skupiny registrací
Na webu Azure Portal přejděte do vaší instance služby IoT Hub Device Provisioning.
V části Nastavení vyberte Spravovat registrace.
Vyberte Přidat skupinu registrací a pak dokončete následující kroky a nakonfigurujte registraci.
Na kartě Registrace a zřizování zvolte následující nastavení:
Nastavení Hodnota Mechanismus ověření identity Vyberte certifikáty X.509 nahrané do této instance služby Device Provisioning Service. Primární certifikát Výběr certifikátu z rozevíracího seznamu Název skupiny Zadejte popisný název pro tuto registraci skupiny. Stav zřizování Zaškrtněte políčko Povolit tuto registraci . Na kartě Centra IoT vyberte ze seznamu svou službu IoT Hub.
Na kartě Nastavení zařízení zaškrtněte políčko Povolit IoT Edge na zřízených zařízeních.
Ostatní nastavení nejsou pro tento kurz relevantní. Můžete přijmout výchozí nastavení.
Vyberte Zkontrolovat a vytvořit.
Teď, když pro zařízení existuje registrace, může modul runtime IoT Edge automaticky spravovat certifikáty zařízení pro propojenou službu IoT Hub.
Konfigurace zařízení IoT Edge
Na zařízení IoT Edge aktualizujte konfigurační soubor IoT Edge tak, aby používal certifikáty zařízení ze serveru EST.
Otevřete konfigurační soubor IoT Edge pomocí editoru. Například pomocí editoru
nano
/etc/aziot/config.toml
otevřete soubor.sudo nano /etc/aziot/config.toml
Do konfiguračního souboru přidejte nebo nahraďte následující části. Tato nastavení konfigurace používají pro počáteční získání certifikátu zařízení ze serveru EST ověřování pomocí uživatelského jména a hesla. Certifikát zařízení slouží k ověření na serveru EST pro budoucí obnovení certifikátů.
Nahraďte následující zástupný text:
<DPS-ID-SCOPE>
oborEM ID SLUŽBY DPS propojeným se službou IoT Hub obsahující zaregistrované zařízení amyiotedgedevice
ID zařízení zaregistrovaným ve službě Azure IoT Hub. Hodnotu Rozsah ID najdete na stránce Přehled služby DPS.# 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"
Poznámka:
V tomto příkladu ioT Edge používá k ověření serveru EST uživatelské jméno a heslo pokaždé, když potřebuje získat certifikát. Tato metoda se nedoporučuje v produkčním prostředí, protože 1) vyžaduje uložení tajného kódu ve formátu prostého textu a 2) IoT Edge by k ověření na serveru EST měl použít také certifikát identity. Úprava pro produkční prostředí:
- Zvažte použití dlouhodobých certifikátů bootstrap, které je možné uložit do zařízení během výroby podobně jako doporučený postup pro DPS. Pokud chcete zjistit, jak nakonfigurovat certifikát bootstrap pro server EST, přečtěte si téma Ověřování zařízení pomocí certifikátů vystavených dynamicky prostřednictvím EST.
- Nakonfigurujte
[cert_issuance.est.identity_auto_renew]
stejnou syntaxi jako výše uvedená konfigurace automatického prodlužování zřizovacího certifikátu.
Díky tomu služba certifikátů IoT Edge používá certifikát bootstrap k počátečnímu ověřování se serverem EST a požádá o certifikát identity pro budoucí požadavky EST na stejný server. Pokud z nějakého důvodu vyprší platnost certifikátu identity EST před obnovením, IoT Edge se vrátí zpět k použití certifikátu bootstrap.
Spuštěním použijte
sudo iotedge config apply
nové nastavení.Spuštěním ověřte
sudo iotedge check
konfiguraci zařízení IoT Edge. Všechny kontroly konfigurace by měly být úspěšné. Pro účely tohoto kurzu můžete ignorovat chyby a upozornění provozní připravenosti, upozornění serveru DNS a kontroly připojení.Přejděte na své zařízení ve službě IoT Hub. Kryptografické otisky certifikátů byly do zařízení přidány automaticky pomocí DPS a serveru EST.
Poznámka:
Když vytvoříte nové zařízení IoT Edge, zobrazí se stavový kód
417 -- The device's deployment configuration is not set in the Azure portal.
. Tento stav je normální a znamená, že zařízení je připravené k přijetí nasazení modulu.
Otestování obnovení certifikátu
Certifikáty identity zařízení můžete okamžitě znovu spustit odebráním existujících certifikátů a klíčů ze zařízení a následným použitím konfigurace IoT Edge. IoT Edge rozpozná chybějící soubory a požádá o nové certifikáty.
Na zařízení IoT Edge zastavte modul runtime IoT Edge.
sudo iotedge system stop
Odstraňte existující certifikáty a klíče.
sudo sh -c "rm /var/lib/aziot/certd/certs/*" sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
Použijte konfiguraci IoT Edge k obnovení certifikátů.
sudo iotedge config apply
Možná budete muset několik minut počkat, než se modul runtime spustí.
Přejděte na své zařízení ve službě IoT Hub. Kryptografické otisky certifikátu byly aktualizovány.
Výpis souborů certifikátu pomocí příkazu
sudo ls -l /var/lib/aziot/certd/certs
. U souborů certifikátů zařízení byste měli vidět data nedávného vytvoření.openssl
Pomocí příkazu zkontrolujte obsah nového certifikátu. Příklad:sudo openssl x509 -in /var/lib/aziot/certd/certs/deviceid-bd732105ef89cf8edd2606a5309c8a26b7b5599a4e124a0fe6199b6b2f60e655.cer -text -noout
Nahraďte název souboru certifikátu zařízení (.cer) souborem certifikátu vašeho zařízení.
Měli byste si všimnout, že došlo ke změně rozsahu dat platnosti certifikátu.
Níže jsou uvedené volitelné další způsoby, jak otestovat obnovení certifikátu. Tyto kontroly ukazují, jak IoT Edge obnovuje certifikáty ze serveru EST, když vyprší jejich platnost nebo chybí. Po každém testu můžete ověřit nové kryptografické otisky na webu Azure Portal a pomocí openssl
příkazu ověřit nový certifikát.
- Zkuste počkat na den, než vyprší platnost certifikátu. Testovací server EST je nakonfigurovaný tak, aby vytvořil certifikáty, jejichž platnost vyprší po jednom dni. IoT Edge certifikát automaticky obnoví.
- Zkuste upravit procentuální hodnotu
threshold
pro automatické prodlužování nastavené vconfig.toml
(aktuálně nastaveno na 80 % v ukázkové konfiguraci). Nastavte ho například na10%
prodloužení platnosti certifikátu každých ~2 hodiny a sledujte ho. - Zkuste upravit
threshold
celé číslo následovaném
(minuty). Nastavte ho například na60m
1 hodiny před vypršením platnosti a sledujte prodloužení platnosti certifikátu.
Vyčištění prostředků
Prostředky a konfigurace, které jste vytvořili v tomto kurzu, můžete zachovat a znovu je použít. Jinak můžete odstranit místní konfigurace a prostředky Azure, které jste použili v tomto článku, abyste se vyhnuli poplatkům.
Odstranění prostředků Azure
Odstranění prostředků Azure a skupin prostředků je nevratná akce. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste centrum IoT vytvořili ve stávající skupině prostředků, která obsahuje prostředky, které chcete zachovat, odstraňte pouze samotný prostředek ioT Hubu, nikoli skupinu prostředků.
Odstranění prostředků:
Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.
Vyberte název skupiny prostředků, která obsahuje vaše testovací prostředky služby IoT Edge.
Zkontrolujte seznam prostředků, které vaše skupina prostředků obsahuje. Pokud chcete odstranit všechny prostředky, můžete vybrat možnost Odstranit skupinu prostředků. Pokud chcete odstranit jenom některé z nich, můžete vybrat jednotlivé prostředky, které chcete odstranit jednotlivě.
Další kroky
- Pokud chcete k vydávání certifikátů certifikační autority Edge použít server EST, přečtěte si příklad konfigurace.
- Pro produkční prostředí se nedoporučuje používat ověřování pomocí uživatelského jména a hesla pro server EST. Místo toho zvažte použití dlouhodobých certifikátů bootstrap, které je možné uložit do zařízení během výroby podobně jako doporučený postup pro DPS. Pokud chcete zjistit, jak nakonfigurovat certifikát bootstrap pro server EST, přečtěte si téma Ověřování zařízení pomocí certifikátů vystavených dynamicky prostřednictvím EST.
- Server EST se dá použít také k vydávání certifikátů pro všechna zařízení v hierarchii. V závislosti na tom, jestli máte požadavky ISA-95, může být nutné spustit řetěz serverů EST s jedním na každé vrstvě nebo pomocí modulu proxy rozhraní API předávat požadavky. Další informace najdete na blogu Kevina.
- U řešení na podnikové úrovni zvažte: Registrace GlobalSign IoT Edge, DigiCert IoT Správce zařízení a Keytos EZCA.
- Další informace ocertifikátch