Kurz: Konfigurace registrace přes zabezpečený transportní server pro Azure IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 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í

Diagram znázorňující základní přehled tří kroků potřebných k dokončení tohoto kurzu

Požadavky

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 libesta 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í.

  1. Připojení zařízení, například pomocí SSH, kde jste nainstalovali IoT Edge.

  2. 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
    
  3. V adresáři obsahujícím vaši Dockerfileimage sestavte z ukázkového souboru Dockerfile.

    sudo docker build . --tag est
    
  4. Spusťte kontejner a zpřístupňte port 8085 kontejneru na portu 8085 na hostiteli.

    sudo docker run -d -p 8085:8085 est
    
  5. 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
    
  6. 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í.

  1. Na zařízení IoT Edge vytvořte /var/aziot/certs adresář, pokud neexistuje, změňte ho na něj.

    # 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
    
  2. Načtěte certifikát certifikační autority ze serveru EST do /var/aziot/certs adresáře a pojmenujte ho 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
    
  3. 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

  1. 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.

  2. 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říkazu cat /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.

  3. Na webu Azure Portal přejděte do vaší instance služby IoT Hub Device Provisioning.

  4. V části Nastavení vyberte Certifikáty a pak +Přidat.

    Snímek obrazovky s přidáním certifikátu certifikační autority do služby Device Provisioning pomocí webu Azure Portal

    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
  5. Zvolte Uložit.

Vytvoření skupiny registrací

  1. Na webu Azure Portal přejděte do vaší instance služby IoT Hub Device Provisioning.

  2. V části Nastavení vyberte Spravovat registrace.

  3. Vyberte Přidat skupinu registrací a pak dokončete následující kroky a nakonfigurujte registraci.

  4. Na kartě Registrace a zřizování zvolte následující nastavení:

    Snímek obrazovky s přidáním skupiny registrací DPS pomocí webu Azure Portal

    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 .
  5. Na kartě Centra IoT vyberte ze seznamu svou službu IoT Hub.

  6. 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í.

  7. 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.

  1. 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
    
  2. 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í a myiotedgedevice 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á uživatelské jméno a heslo k ověření na serveru EST 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í:

    1. 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.
    2. 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.

  3. Spuštěním použijte sudo iotedge config apply nové nastavení.

  4. 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í.

  5. 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.

    Snímek obrazovky s nastavením zařízení ioT Hubu na webu Azure Portal Pole kryptografických otisků certifikátu zobrazují hodnoty.

    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.

  1. Na zařízení IoT Edge zastavte modul runtime IoT Edge.

    sudo iotedge system stop
    
  2. 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/*"
    
  3. 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í.

  4. Přejděte na své zařízení ve službě IoT Hub. Kryptografické otisky certifikátu byly aktualizovány.

    Snímek obrazovky s nastavením zařízení ioT Hubu na webu Azure Portal Pole kryptografických otisků certifikátu zobrazují nové hodnoty.

  5. 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í.

  6. 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.

  1. 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í.
  2. Zkuste upravit procentuální hodnotu threshold pro automatické prodlužování nastavené v config.toml (aktuálně nastaveno na 80 % v ukázkové konfiguraci). Nastavte ho například na 10% prodloužení platnosti certifikátu každých ~2 hodiny a sledujte ho.
  3. Zkuste upravit threshold celé číslo následované m (minuty). Nastavte ho například na 60m 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ů:

  1. Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.

  2. Vyberte název skupiny prostředků, která obsahuje vaše testovací prostředky služby IoT Edge.

  3. Zkontrolujte seznam prostředků obsažených ve vaší skupině prostředků. Pokud chcete odstranit všechny prostředky, můžete vybrat možnost Odstranit skupinu prostředků. Pokud chcete odstranit pouze některé prostředky, můžete na ně kliknout a odstranit je 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 nebo DigiCert IoT Správce zařízení
  • Další informace ocertifikátch