Dela via


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

Gäller för:ja-ikonen IoT Edge 1.1

Viktigt

IoT Edge 1.1 slutdatum var den 13 december 2022. I informationen om Microsoft-produktens livscykel hittar du fler uppgifter om vilken support som gäller för denna produkt, tjänst, teknik eller detta API. Mer information om hur du uppdaterar till den senaste versionen av IoT Edge finns i 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 prova IoT Edge funktioner i testmiljön. Den här artikeln beskriver 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

Den 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:

  • Lättare: 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. Gå 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 openssl.exe-filen är tillgänglig för anrop.

Förbereda skript i PowerShell

Azure IoT Edge git-lagringsplats 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 IoT Edge git-lagringsplats, som innehåller skript för att generera democertifikat. git clone Använd kommandot eller ladda ned ZIP.

    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 med 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 bara är i testsyfte och inte bör användas i produktionsscenarier.

  6. Kontrollera att OpenSSL har installerats korrekt och se till att det inte uppstår namnkollisioner med befintliga certifikat. Om det uppstår 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ä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 den 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å den 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 den IoT Edge enheten i IoT Hub.

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

    Typ Fil 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 det mellanliggande certifikatet. 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 dps eller IoT Hub.

Skapa certifikat för enhetscertifikatutfärdare

Dessa certifikat krävs för gatewayscenarier eftersom ca-enhetscertifikatet ä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.

Ca-certifikatet för enheten ansvarar också för att skapa certifikat för moduler som körs på enheten, men IoT Edge körning kan skapa ett tillfälligt certifikat om enhetens certifikatutfärdare inte har konfigurerats. Certifikat från enhetscertifikatutfärdare finns i avsnittet Certifikat i config.yaml filen på IoT Edge enheten. Mer information finns i Förstå hur Azure IoT Edge använder certifikat.

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

  2. Skapa IoT Edge CA-certifikat och privat nyckel med följande kommando. Ange ett namn för CA-certifikatet. Namnet som skickas till kommandot New-CACertsEdgeDevice får inte vara samma som parametern hostname 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 till 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 underordnad 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 att placera på din IoT-enhet. Dessa certifikat har ett tumavtryck som du delar med IoT Hub för autentisering.
  • För X.509-certifikatutfärdare (CA) signerad autentisering behöver du ett rotcertifikatutfärdarcertifikat 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 utfärdats av rotcertifikatutfärdarcertifikatet eller något av dess mellanliggande certifikat kan autentisera 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 autentisera med IoT Hub.

  1. Gå 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. Ett 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 hexadecimal teckensträng på 40 tecken. Använd följande openssl-kommando för att visa certifikatet och hitta tumavtrycket:

    openssl x509 -in certs\iot-device-<device name>-primary.cert.pem -text -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 att din lösning ska IoT Hub. Använd samma rotcertifikatutfärdarcertifikat för att skapa enhetscertifikat som ska placeras 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å kryptering av offentliga nycklar och X.509 Public Key Infrastructure för introduktionen av den här serien.

  1. Ladda upp certifikatfilen för rotcertifikatutfärdare 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 Portal för att verifiera 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