Skapa democertifikat för att testa funktioner på IoT Edge-enheter

Gäller för:IoT Edge 1.4 checkmark IoT Edge 1.4

Viktigt!

IoT Edge 1.4 är den version som stöds. Om du har en tidigare version läser du Uppdatera IoT Edge.

IoT Edge-enheter kräver certifikat för säker kommunikation mellan körningen, modulerna och eventuella underordnade enheter. Om du inte har någon certifikatutfärdare för att skapa de certifikat som krävs kan du använda democertifikat för att testa IoT Edge-funktioner i testmiljön. I den här artikeln beskrivs funktionerna i de certifikatgenereringsskript som IoT Edge tillhandahåller för testning.

Varning

Dessa certifikat upphör att gälla om 30 dagar och bör inte användas i något produktionsscenario.

Du kan skapa certifikat på valfri dator och sedan kopiera dem till din IoT Edge-enhet eller generera certifikaten direkt på IoT Edge-enheten.

Förutsättningar

En utvecklingsdator med Git installerat.

Ladda ned testcertifikatskript och konfigurera arbetskatalog

IoT Edge-lagringsplatsen på GitHub innehåller certifikatgenereringsskript som du kan använda för att skapa democertifikat. Det här avsnittet innehåller instruktioner för hur du förbereder skripten som ska köras på datorn, antingen i Windows eller Linux.

Om du vill skapa democertifikat på en Windows-enhet måste du installera OpenSSL och sedan klona generationskripten och konfigurera dem så att de körs lokalt i PowerShell.

Installera OpenSSL

Installera OpenSSL för Windows på den dator som du använder för att generera certifikaten. Om du redan har OpenSSL installerat på din Windows-enhet kontrollerar du att openssl.exe är tillgängligt i path-miljövariabeln.

Det finns flera sätt att installera OpenSSL, inklusive följande alternativ:

  • Enklare: Ladda ned och installera eventuella OpenSSL-binärfiler från tredje part, till exempel från OpenSSL på SourceForge. Lägg till den fullständiga sökvägen till openssl.exe i path-miljövariabeln.

  • Rekommenderas: Ladda ned OpenSSL-källkoden och skapa binärfilerna på datorn själv eller via vcpkg. Anvisningarna nedan använder vcpkg för att ladda ned källkod, kompilera och installera OpenSSL på din Windows-dator med enkla steg.

    1. Navigera till en katalog där du vill installera vcpkg. Följ anvisningarna för att ladda ned och installera vcpkg.

    2. När vcpkg har installerats kör du följande kommando från en PowerShell-prompt för att installera OpenSSL-paketet för Windows x64. Installationen tar vanligtvis cirka 5 minuter att slutföra.

      .\vcpkg install openssl:x64-windows
      
    3. Lägg till <vcpkg path>\installed\x64-windows\tools\openssl i path-miljövariabeln så att filen openssl.exe är tillgänglig för anrop.

Förbereda skript i PowerShell

Git-lagringsplatsen för Azure IoT Edge innehåller skript som du kan använda för att generera testcertifikat. I det här avsnittet klonar du IoT Edge-lagringsplatsen och kör skripten.

  1. Öppna ett PowerShell-fönster i administratörsläge.

  2. Klona git-lagringsplatsen IoT Edge, som innehåller skript för att generera democertifikat. git clone Använd kommandot eller ladda ned ZIP-filen.

    git clone https://github.com/Azure/iotedge.git
    
  3. Skapa en katalog där du vill arbeta och kopiera certifikatskripten där. Alla certifikat- och nyckelfiler skapas i den här katalogen.

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

    Om du laddade ned lagringsplatsen som en ZIP är iotedge-master mappnamnet och resten av sökvägen är densamma.

  4. Aktivera PowerShell för att köra skripten.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Ta de funktioner som används av skripten till PowerShells globala namnområde.

    . .\ca-certs.ps1
    

    PowerShell-fönstret visar en varning om att certifikaten som genereras av det här skriptet endast är i testsyfte och inte bör användas i produktionsscenarier.

  6. Kontrollera att OpenSSL har installerats korrekt och se till att det inte finns namnkollisioner med befintliga certifikat. Om det finns problem bör skriptutdata beskriva hur du åtgärdar dem i systemet.

    Test-CACertsPrerequisites
    

Skapa rotcertifikatutfärdarcertifikat

Kör det här skriptet för att generera en rotcertifikatutfärdare som krävs för varje steg i den här artikeln.

Rotcertifikatutfärdarcertifikatet används för att göra alla andra democertifikat för testning av ett IoT Edge-scenario. Du kan fortsätta att använda samma rotcertifikatutfärdarcertifikat för att skapa democertifikat för flera IoT Edge- eller underordnade enheter.

Om du redan har ett rotcertifikatutfärdarcertifikat i arbetsmappen ska du inte skapa ett nytt. Det nya rotcertifikatutfärdarcertifikatutfärdarcertifikatet skriver över det gamla och eventuella underordnade certifikat från det gamla slutar fungera. Om du vill ha flera rotcertifikatutfärdarcertifikat måste du hantera dem i separata mappar.

  1. Navigera till arbetskatalogen wrkdir där du placerade certifikatgenereringsskripten.

  2. Skapa rotcertifikatutfärdarcertifikatet och få det att signera ett mellanliggande certifikat. Certifikaten placeras alla i arbetskatalogen.

    New-CACertsCertChain rsa
    

    Det här skriptkommandot skapar flera certifikat- och nyckelfiler, men när artiklar frågar efter rotcertifikatutfärdarcertifikatet använder du följande fil:

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

Det här certifikatet krävs innan du kan skapa fler certifikat för dina IoT Edge-enheter och underordnade enheter enligt beskrivningen i nästa avsnitt.

Skapa identitetscertifikat för IoT Edge-enheten

IoT Edge-enhetsidentitetscertifikat används för att etablera IoT Edge-enheter om du väljer att använda X.509-certifikatautentisering. Om du använder symmetrisk nyckel för autentisering till IoT Hub eller DPS behövs inte dessa certifikat, och du kan hoppa över det här avsnittet.

Dessa certifikat fungerar oavsett om du använder manuell etablering eller automatisk etablering via Azure IoT Hub Device Provisioning Service (DPS).

Enhetsidentitetscertifikat finns i avsnittet Etablering i konfigurationsfilen på IoT Edge-enheten.

  1. Navigera till arbetskatalogen wrkdir som har certifikatgenereringsskripten och rotcertifikatutfärdarcertifikatet.

  2. Skapa IoT Edge-enhetsidentitetscertifikatet och den privata nyckeln med följande kommando:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Namnet som du skickar till det här kommandot är enhets-ID:t för IoT Edge-enheten i IoT Hub.

  3. Det nya enhetsidentitetskommandot skapar flera certifikat- och nyckelfiler:

    Type Arkiv Description
    Enhetsidentitetscertifikat certs\iot-edge-device-identity-<device-id>.cert.pem Signerat av det mellanliggande certifikat som genererades tidigare. Innehåller bara identitetscertifikatet. Ange i konfigurationsfilen för individuell DPS-registrering eller IoT Hub-etablering.
    Fullständigt kedjecertifikat certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Innehåller den fullständiga certifikatkedjan inklusive mellanliggande certifikat. Ange i konfigurationsfilen för IoT Edge som ska presenteras för DPS för etablering av gruppregistrering.
    Privat nyckel private\iot-edge-device-identity-<device-id>.key.pem Privat nyckel som är associerad med enhetsidentitetscertifikatet. Bör anges i konfigurationsfilen så länge du använder någon form av certifikatautentisering (tumavtryck eller CA) för antingen DPS eller IoT Hub.

Skapa certifikat för gränscertifikatutfärdare

Dessa certifikat krävs för gatewayscenarier eftersom edge CA-certifikatet är hur IoT Edge-enheten verifierar sin identitet till underordnade enheter. Du kan hoppa över det här avsnittet om du inte ansluter några underordnade enheter till IoT Edge.

Edge CA-certifikatet ansvarar också för att skapa certifikat för moduler som körs på enheten, men IoT Edge-körning kan skapa tillfälliga certifikat om edge CA inte har konfigurerats. Edge CA-certifikat finns i avsnittet config.toml Edge CA i filen på IoT Edge-enheten. Mer information finns i Förstå hur Azure IoT Edge använder certifikat.

  1. Navigera till arbetskatalogen wrkdir som har certifikatgenereringsskripten och rotcertifikatutfärdarcertifikatet.

  2. Skapa IoT Edge CA-certifikatet och den privata nyckeln med följande kommando. Ange ett namn för CA-certifikatet. Namnet som skickas till kommandot New-CACertsEdgeDevice ska inte vara detsamma som parametern värdnamn i konfigurationsfilen eller enhetens ID i IoT Hub.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Det här kommandot skapar flera certifikat- och nyckelfiler. Följande certifikat och nyckelpar måste kopieras till en IoT Edge-enhet och refereras i konfigurationsfilen:

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

Skapa underordnade enhetscertifikat

Dessa certifikat krävs för att konfigurera en nedströms IoT-enhet för ett gatewayscenario och vill använda X.509-autentisering med IoT Hub eller DPS. Om du vill använda symmetrisk nyckelautentisering behöver du inte skapa certifikat för den underordnade enheten och kan hoppa över det här avsnittet.

Det finns två sätt att autentisera en IoT-enhet med X.509-certifikat: använda självsignerade certifikat eller använda certifikatutfärdare (CA) signerade certifikat.

  • För självsignerad X.509-autentisering, som ibland kallas tumavtrycksautentisering , måste du skapa nya certifikat som ska installeras på din IoT-enhet. Dessa certifikat har ett tumavtryck i sig som du delar med IoT Hub för autentisering.
  • För X.509-certifikatutfärdare (CA) signerad autentisering behöver du ett rotcertifikatutfärdarcertifikat som är registrerat i IoT Hub eller DPS som du använder för att signera certifikat för din IoT-enhet. Alla enheter som använder ett certifikat som har utfärdats av rotcertifikatutfärdarcertifikatet eller något av dess mellanliggande certifikat kan autentiseras så länge hela kedjan visas av enheten.

Skripten för certifikatgenerering kan hjälpa dig att skapa democertifikat för att testa något av dessa autentiseringsscenarier.

Självsignerade certifikat

När du autentiserar en IoT-enhet med självsignerade certifikat måste du skapa enhetscertifikat baserat på rotcertifikatutfärdarcertifikatet för din lösning. Sedan hämtar du ett hexadecimalt "tumavtryck" från certifikaten som ska tillhandahållas till IoT Hub. Din IoT-enhet behöver också en kopia av sina enhetscertifikat så att den kan autentiseras med IoT Hub.

  1. Navigera till arbetskatalogen wrkdir som har certifikatgenereringsskripten och rotcertifikatutfärdarcertifikatet.

  2. Skapa två certifikat (primära och sekundära) för den underordnade enheten. En enkel namngivningskonvention att använda är att skapa certifikaten med namnet på IoT-enheten och sedan den primära eller sekundära etiketten. Till exempel:

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

    Det här skriptkommandot skapar flera certifikat- och nyckelfiler. Följande certifikat- och nyckelpar måste kopieras till den underordnade IoT-enheten och refereras till i de program som ansluter till 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. Hämta SHA1-tumavtrycket (kallas tumavtryck i IoT Hub-kontexter) från varje certifikat. Tumavtrycket är en 40 hexadecimal teckensträng. Använd följande openssl-kommando för att visa certifikatet och hitta tumavtrycket:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

    Kör det här kommandot två gånger, en gång för det primära certifikatet och en gång för det sekundära certifikatet. Du anger tumavtryck för båda certifikaten när du registrerar en ny IoT-enhet med självsignerade X.509-certifikat.

CA-signerade certifikat

När du autentiserar en IoT-enhet med CA-signerade certifikat måste du ladda upp rotcertifikatutfärdarcertifikatet för din lösning till IoT Hub. Använd samma rotcertifikatutfärdarcertifikat för att skapa enhetscertifikat för att placera på din IoT-enhet så att den kan autentisera med IoT Hub.

Certifikaten i det här avsnittet är till för stegen i självstudieserien IoT Hub X.509-certifikat. Se Förstå public key cryptography och X.509 Public Key Infrastructure för introduktionen av den här serien.

  1. Ladda upp rotcertifikatutfärdarcertifikatfilen från arbetskatalogen, certs\azure-iot-test-only.root.ca.cert.pem, till din IoT-hubb.

  2. Om automatisk verifiering inte har valts använder du koden i Azure-portalen för att kontrollera att du äger rotcertifikatutfärdarcertifikatet.

    New-CACertsVerificationCert "<verification code>"
    
  3. Skapa en certifikatkedja för din underordnade enhet. Använd samma enhets-ID som enheten är registrerad med i IoT Hub.

    New-CACertsDevice "<device id>"
    

    Det här skriptkommandot skapar flera certifikat- och nyckelfiler. Följande certifikat- och nyckelpar måste kopieras till den underordnade IoT-enheten och refereras till i de program som ansluter till 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