Dela via


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

Gäller för:Bockmarkering för IoT Edge 1.5 IoT Edge 1.5

Viktigt!

IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.

IoT Edge-enheter behö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 använder du democertifikat för att prova IoT Edge-funktioner i testmiljön. I den här artikeln beskrivs de skript för certifikatgenerering som IoT Edge tillhandahåller för testning.

Varning

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

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

Förutsättningar

Använd en utvecklingsdator som har 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 installerar du OpenSSL, klonar sedan generationsskripten och konfigurerar dem så att de körs lokalt i PowerShell.

Installera OpenSSL

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

Du kan installera OpenSSL på olika sätt:

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

  • Rekommenderad: Ladda ned OpenSSL-källkoden och skapa binärfilerna på enheten eller använd vcpkg. Följande instruktioner använder vcpkg för att ladda ned källkod, kompilera och installera OpenSSL på din Windows-enhet.

    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 PowerShell i administratörsläge.

  2. Klona IoT Edge git-lagringsplatsen, som har 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 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. Ange PowerShell-körningsprincipen för att köra skripten.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Importera 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 för testning 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 ett rot-CA-certifikat. Du behöver det här certifikatet för varje steg i den här artikeln.

Använd rotcertifikatet för att skapa andra democertifikat för att testa ett IoT Edge-scenario. Du kan använda samma rot-CA-certifikat för att skapa democertifikat för flera IoT Edge-enheter eller underordnade enheter.

Om du redan har ett rot-CA-certifikat i din arbetsmapp ska du inte skapa ett nytt. När du skapar ett nytt rot-CA-certifikat skrivs det gamla över och eventuella nedströms certifikat som skapats från det gamla certifikatet slutar fungera. Om du behöver flera root CA-certifikat, se till att hantera dem i separata mappar.

  1. Gå till arbetskatalogen wrkdir där du placerar certifikatgenereringsskripten.

  2. Skapa ett rot-CA-certifikat och signera ett intermediärt certifikat. Certifikaten placeras i arbetskatalogen.

    New-CACertsCertChain rsa
    

    Det här skriptet skapar flera certifikat- och nyckelfiler. När artiklar efterfrågar rot-CA-certifikatet använder du den här filen:

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

Du behöver det här certifikatet innan du skapar 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. Gå till arbetskatalogen wrkdir som har certifikatgenereringsskripten och rot-CA-certifikatet.

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

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Namnet du anger för det här kommandot är enhets-ID för IoT Edge-enheten i IoT Hub.

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

    Typ Fil beskrivning
    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 Edge CA-certifikat

Du behöver dessa certifikat för gatewayscenarier eftersom Edge CA-certifikatet låter IoT Edge-enheten verifiera sin identitet till underordnade enheter. Hoppa över det här avsnittet om du inte ansluter några underordnade enheter till IoT Edge.

Edge CA-certifikatet skapar också certifikat för moduler som körs på enheten, men IoT Edge-körningen kan skapa tillfälliga certifikat om Edge CA inte har konfigurerats. Placera Edge CA-certifikat i avsnittet config.toml 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. Använd inte samma namn som parametern värdnamn i konfigurationsfilen eller enhetens ID i IoT Hub för kommandot New-CACertsEdgeDevice .

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Det här kommandot skapar flera certifikat- och nyckelfiler. Kopiera följande certifikat och nyckelpar till IoT Edge-enheten och referera till dem i konfigurationsfilen:

    • certs\iot-edge-device-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-<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 som anges 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