Vytváření ukázkových certifikátů pro účely testování funkcí zařízení IoT Edge

Platí pro:ikona ano IoT Edge 1.1

Důležité

IoT Edge 1.1 ukončení podpory bylo 13. prosince 2022. Informace o způsobu podpory tohoto produktu, služby, technologie nebo rozhraní API najdete v tématu věnovaném životnímu cyklu produktů Microsoftu. Další informace o aktualizaci na nejnovější verzi IoT Edge najdete v tématu Aktualizace IoT Edge.

IoT Edge zařízení vyžadují certifikáty pro zabezpečenou komunikaci mezi modulem runtime, moduly a všemi podřízenými zařízeními. Pokud nemáte certifikační autoritu k vytvoření požadovaných certifikátů, můžete pomocí ukázkových certifikátů vyzkoušet IoT Edge funkce v testovacím prostředí. Tento článek popisuje funkce skriptů generování certifikátů, které IoT Edge poskytují pro testování.

Upozornění

Platnost těchto certifikátů vyprší za 30 dnů a neměly by se používat v žádném produkčním scénáři.

Certifikáty můžete vytvořit na libovolném počítači a pak je zkopírovat do IoT Edge zařízení nebo vygenerovat certifikáty přímo na IoT Edge zařízení.

Požadavky

Vývojový počítač s nainstalovaným Gitem

Stažení skriptů testovacích certifikátů a nastavení pracovního adresáře

Úložiště IoT Edge na GitHubu obsahuje skripty pro generování certifikátů, které můžete použít k vytvoření ukázkových certifikátů. Tato část obsahuje pokyny pro přípravu skriptů ke spuštění na vašem počítači, a to buď ve Windows, nebo v Linuxu.

Pokud chcete vytvořit ukázkové certifikáty na zařízení s Windows, musíte nainstalovat OpenSSL, naklonovat generační skripty a nastavit je tak, aby se spouštěly místně v PowerShellu.

Instalace OpenSSL

Nainstalujte OpenSSL pro Windows na počítač, který používáte k vygenerování certifikátů. Pokud už máte na zařízení s Windows nainstalovaný OpenSSL, ujistěte se, že je v proměnné prostředí PATH k dispozici openssl.exe.

Existuje několik způsobů, jak nainstalovat OpenSSL, včetně následujících možností:

  • Jednodušší: Stáhněte a nainstalujte všechny binární soubory OpenSSL třetích stran, například z OpenSSL ve službě SourceForge. Přidejte úplnou cestu k openssl.exe do proměnné prostředí PATH.

  • Doporučené: Stáhněte si zdrojový kód OpenSSL a sestavte binární soubory na počítači sami nebo prostřednictvím vcpkg. Níže uvedené pokyny používají vcpkg ke stažení zdrojového kódu, kompilaci a instalaci OpenSSL na počítači s Windows pomocí jednoduchých kroků.

    1. Přejděte do adresáře, do kterého chcete nainstalovat vcpkg. Postupujte podle pokynů ke stažení a instalaci vcpkg.

    2. Po instalaci vcpkg spusťte na příkazovém řádku PowerShellu následující příkaz, který nainstaluje balíček OpenSSL pro Windows x64. Dokončení instalace obvykle trvá přibližně 5 minut.

      .\vcpkg install openssl:x64-windows
      
    3. Přidejte <vcpkg path>\installed\x64-windows\tools\openssl do proměnné prostředí PATH, aby byl openssl.exe soubor k dispozici pro vyvolání.

Příprava skriptů v PowerShellu

Úložiště Azure IoT Edge Git obsahuje skripty, které můžete použít ke generování testovacích certifikátů. V této části naklonujete úložiště IoT Edge a spustíte skripty.

  1. Otevřete okno PowerShellu v režimu správce.

  2. Naklonujte IoT Edge úložiště Git, které obsahuje skripty pro generování ukázkových certifikátů. git clone Použijte příkaz nebo si stáhněte soubor ZIP.

    git clone https://github.com/Azure/iotedge.git
    
  3. Vytvořte adresář, ve kterém chcete pracovat, a zkopírujte do něho skripty certifikátů. V tomto adresáři se vytvoří všechny certifikáty a soubory klíčů.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    Pokud jste si úložiště stáhli jako SOUBOR ZIP, název složky je iotedge-master a zbytek cesty je stejný.

  4. Povolte PowerShellu ke spouštění skriptů.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Funkce používané skripty přeneste do globálního oboru názvů PowerShellu.

    . .\ca-certs.ps1
    

    V okně PowerShellu se zobrazí upozornění, že certifikáty vygenerované tímto skriptem jsou pouze pro testovací účely a neměly by se používat v produkčních scénářích.

  6. Ověřte, že je openSSL správně nainstalovaný, a ujistěte se, že nedojde ke kolizím názvů s existujícími certifikáty. Pokud dojde k problémům, měl by výstup skriptu popsat, jak je opravit v systému.

    Test-CACertsPrerequisites
    

Vytvoření kořenového certifikátu certifikační autority

Spuštěním tohoto skriptu vygenerujte kořenovou certifikační autoritu, která se vyžaduje pro každý krok v tomto článku.

Certifikát kořenové certifikační autority slouží k vytvoření všech ostatních ukázkových certifikátů pro testování IoT Edge scénáře. Stejný certifikát kořenové certifikační autority můžete dál používat k vytváření ukázkových certifikátů pro více IoT Edge nebo podřízených zařízení.

Pokud už máte v pracovní složce jeden certifikát kořenové certifikační autority, nevytvávejte nový. Nový kořenový certifikát certifikační autority přepíše starý certifikát a všechny podřízené certifikáty vytvořené ze starého certifikátu přestanou fungovat. Pokud chcete více certifikátů kořenové certifikační autority, nezapomeňte je spravovat v samostatných složkách.

  1. Přejděte do pracovního adresáře wrkdir , do kterého jste umístili skripty generování certifikátů.

  2. Vytvořte certifikát kořenové certifikační autority a nechte ho podepsat jeden zprostředkující certifikát. Všechny certifikáty jsou umístěné ve vašem pracovním adresáři.

    New-CACertsCertChain rsa
    

    Tento příkaz skriptu vytvoří několik souborů certifikátů a klíčů, ale když články požádají o certifikát kořenové certifikační autority, použijte následující soubor:

    certs\azure-iot-test-only.root.ca.cert.pem

Tento certifikát se vyžaduje před vytvořením dalších certifikátů pro IoT Edge zařízení a podřízená zařízení, jak je popsáno v dalších částech.

Vytvoření certifikátu identity pro IoT Edge zařízení

IoT Edge certifikáty identity zařízení slouží ke zřízení IoT Edge zařízení, pokud se rozhodnete použít ověřování certifikátů X.509. Pokud k ověřování pro IoT Hub nebo DPS použijete symetrický klíč, nejsou tyto certifikáty potřeba a tuto část můžete přeskočit.

Tyto certifikáty fungují bez ohledu na to, jestli používáte ruční zřizování nebo automatické zřizování prostřednictvím služby Azure IoT Hub Device Provisioning Service (DPS).

Certifikáty identity zařízení najdete v konfiguračním souboru na IoT Edge zařízení v části Zřizování.

  1. Přejděte do pracovního adresáře wrkdir , který obsahuje skripty generování certifikátů a certifikát kořenové certifikační autority.

  2. Pomocí následujícího příkazu vytvořte certifikát identity zařízení a privátní klíč IoT Edge:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Název, který předáte tomuto příkazu, je ID zařízení IoT Edge zařízení v IoT Hub.

  3. Nový příkaz identity zařízení vytvoří několik souborů certifikátů a klíčů:

    Typ Soubor Description
    Certifikát identity zařízení certs\iot-edge-device-identity-<device-id>.cert.pem Podepsáno zprostředkujícím certifikátem vygenerovaným dříve. Obsahuje jenom certifikát identity. V konfiguračním souboru zadejte pro jednotlivou registraci dps nebo zřizování IoT Hub.
    Úplný zřetězený certifikát certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Obsahuje úplný řetěz certifikátů včetně zprostředkujícího certifikátu. V konfiguračním souboru zadejte IoT Edge prezentovat službě DPS pro zřizování skupinové registrace.
    Privátní klíč private\iot-edge-device-identity-<device-id>.key.pem Privátní klíč přidružený k certifikátu identity zařízení. Měl by být zadán v konfiguračním souboru, pokud pro službu DPS nebo IoT Hub používáte nějaký druh ověřování certifikátu (kryptografický otisk nebo certifikační autorita).

Vytvoření certifikátů certifikační autority zařízení

Tyto certifikáty se vyžadují pro scénáře brány, protože certifikát certifikační autority zařízení je způsob, jakým IoT Edge zařízení ověřuje svou identitu podřízeným zařízením. Pokud nepřipojíte žádná podřízená zařízení k IoT Edge, můžete tuto část přeskočit.

Certifikát certifikační autority zařízení je také zodpovědný za vytváření certifikátů pro moduly spuštěné na zařízení, ale IoT Edge runtime může vytvořit dočasný certifikát, pokud není nakonfigurovaná certifikační autorita zařízení. Certifikáty certifikační autority zařízení najdete v souboru na IoT Edge zařízení v části config.yamlCertifikát. Další informace najdete v tématu Vysvětlení, jak Azure IoT Edge používá certifikáty.

  1. Přejděte do pracovního adresáře wrkdir , který obsahuje skripty generování certifikátů a certifikát kořenové certifikační autority.

  2. Pomocí následujícího příkazu vytvořte certifikát a privátní klíč certifikační autority IoT Edge. Zadejte název certifikátu certifikační autority. Název předaný příkazu New-CACertsEdgeDeviceby neměl být stejný jako parametr názvu hostitele v konfiguračním souboru nebo ID zařízení v IoT Hub.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Tento příkaz vytvoří několik souborů certifikátů a klíčů. Následující pár certifikátu a klíče je potřeba zkopírovat do IoT Edge zařízení a odkazovat na ho v konfiguračním souboru:

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

Vytvoření podřízených certifikátů zařízení

Tyto certifikáty se vyžadují pro nastavení podřízeného zařízení IoT pro scénář brány a chtějí používat ověřování X.509 s IoT Hub nebo DPS. Pokud chcete použít ověřování symetrickým klíčem, nemusíte vytvářet certifikáty pro podřízené zařízení a můžete tuto část přeskočit.

Existují dva způsoby, jak ověřit zařízení IoT pomocí certifikátů X.509: pomocí certifikátů podepsaných svým držitelem nebo pomocí certifikátů podepsaných certifikační autoritou (CA).

  • Pro ověřování podepsané svým držitelem X.509, které se někdy označuje jako ověřování kryptografického otisku , musíte vytvořit nové certifikáty, které se umístí do zařízení IoT. Tyto certifikáty mají kryptografický otisk, který sdílíte s IoT Hub pro ověřování.
  • Pro ověřování podepsané certifikační autoritou X.509 potřebujete certifikát kořenové certifikační autority zaregistrovaný v IoT Hub nebo DPS, který používáte k podepisování certifikátů pro vaše zařízení IoT. Jakékoli zařízení, které používá certifikát vydaný kořenovým certifikátem certifikační autority nebo kterýkoli z jejích zprostředkujících certifikátů, se může ověřit za předpokladu, že zařízení předloží celý řetěz.

Skripty generování certifikátů vám můžou pomoct vytvořit ukázkové certifikáty pro otestování některého z těchto scénářů ověřování.

Certifikáty podepsané svým držitelem

Při ověřování zařízení IoT pomocí certifikátů podepsaných svým držitelem musíte vytvořit certifikáty zařízení založené na certifikátu kořenové certifikační autority pro vaše řešení. Pak z certifikátů načtete hexadecimální kryptografický otisk, který chcete poskytnout IoT Hub. Vaše zařízení IoT také potřebuje kopii svých certifikátů zařízení, aby se mohlo ověřovat pomocí IoT Hub.

  1. Přejděte do pracovního adresáře wrkdir , který obsahuje skripty generování certifikátů a certifikát kořenové certifikační autority.

  2. Vytvořte dva certifikáty (primární a sekundární) pro podřízené zařízení. Jednoduchým pravidlem vytváření názvů je vytvoření certifikátů s názvem zařízení IoT a pak primárním nebo sekundárním popiskem. Příklad:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    Tento příkaz skriptu vytvoří několik souborů certifikátů a klíčů. Následující páry certifikátů a klíčů je potřeba zkopírovat do podřízeného zařízení IoT a odkazovat na je v aplikacích, které se připojují k IoT Hub:

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. Načtěte kryptografický otisk SHA1 (označovaný jako kryptografický otisk v IoT Hub kontextech) z každého certifikátu. Kryptografický otisk je 40 šestnáctkový řetězec znaků. Pomocí následujícího příkazu openssl zobrazte certifikát a vyhledejte kryptografický otisk:

    openssl x509 -in certs\iot-device-<device name>-primary.cert.pem -text -thumbprint
    

    Spusťte tento příkaz dvakrát, jednou pro primární certifikát a jednou pro sekundární certifikát. Kryptografické otisky obou certifikátů zadáte při registraci nového zařízení IoT pomocí certifikátů X.509 podepsaných svým držitelem.

Certifikáty podepsané certifikační autoritou

Při ověřování zařízení IoT pomocí certifikátů podepsaných certifikační autoritou musíte nahrát certifikát kořenové certifikační autority pro vaše řešení, aby IoT Hub. Stejný certifikát kořenové certifikační autority použijte k vytvoření certifikátů zařízení, které se umístí na vaše zařízení IoT, aby se mohlo ověřovat pomocí IoT Hub.

Certifikáty v této části jsou určené pro kroky v sérii kurzů k certifikátům IoT Hub X.509. Úvod této řady najdete v tématu Principy kryptografie veřejného klíče a infrastruktury veřejného klíče X.509 .

  1. Nahrajte soubor certifikátu kořenové certifikační autority z pracovního adresáře certs\azure-iot-test-only.root.ca.cert.pemdo centra IoT.

  2. Pokud automatické ověření není vybrané, pomocí kódu uvedeného v Azure Portal ověřte, že jste vlastníkem certifikátu kořenové certifikační autority.

    New-CACertsVerificationCert "<verification code>"
    
  3. Vytvořte řetěz certifikátů pro podřízené zařízení. Použijte stejné ID zařízení, se kterým je zařízení zaregistrované v IoT Hub.

    New-CACertsDevice "<device id>"
    

    Tento příkaz skriptu vytvoří několik souborů certifikátů a klíčů. Následující páry certifikátů a klíčů je potřeba zkopírovat do podřízeného zařízení IoT a odkazovat na je v aplikacích, které se připojují k IoT Hub:

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem