Democertificaten maken om IoT Edge-apparaatfuncties te testen

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

IoT Edge-apparaten vereisen certificaten voor beveiligde communicatie tussen de runtime, de modules en downstreamapparaten. Als u geen certificeringsinstantie hebt om de vereiste certificaten te maken, kunt u democertificaten gebruiken om IoT Edge-functies uit te proberen in uw testomgeving. In dit artikel wordt de functionaliteit beschreven van de scripts voor het genereren van certificaten die IoT Edge biedt voor testen.

Waarschuwing

Deze certificaten verlopen over 30 dagen en mogen niet worden gebruikt in een productiescenario.

U kunt certificaten op elke computer maken en deze vervolgens naar uw IoT Edge-apparaat kopiëren of de certificaten rechtstreeks op het IoT Edge-apparaat genereren.

Vereisten

Een ontwikkelcomputer waarop Git is geïnstalleerd.

Testcertificaatscripts downloaden en werkmap instellen

De IoT Edge-opslagplaats op GitHub bevat scripts voor het genereren van certificaten die u kunt gebruiken om democertificaten te maken. Deze sectie bevat instructies voor het voorbereiden van de scripts die moeten worden uitgevoerd op uw computer, in Windows of Linux.

Als u democertificaten wilt maken op een Windows-apparaat, moet u OpenSSL installeren en vervolgens de generatiescripts klonen en deze instellen om lokaal te worden uitgevoerd in PowerShell.

OpenSSL installeren

Installeer OpenSSL voor Windows op de computer die u gebruikt om de certificaten te genereren. Als OpenSSL al op uw Windows-apparaat is geïnstalleerd, controleert u of openssl.exe beschikbaar is in de omgevingsvariabele PATH.

Er zijn verschillende manieren om OpenSSL te installeren, waaronder de volgende opties:

  • Eenvoudiger: download en installeer alle binaire OpenSSL-bestanden van derden, bijvoorbeeld vanuit OpenSSL op SourceForge. Voeg het volledige pad toe aan openssl.exe aan de omgevingsvariabele PATH.

  • Aanbevolen: Download de OpenSSL-broncode en bouw zelf de binaire bestanden op uw computer of via vcpkg. In de onderstaande instructies wordt vcpkg gebruikt om met eenvoudige stappen de broncode te downloaden, te compileren en OpenSSL te installeren op uw Windows-computer.

    1. Navigeer naar een map waarin u vcpkg wilt installeren. Volg de instructies voor het downloaden en installeren van vcpkg.

    2. Nadat vcpkg is geïnstalleerd, voert u de volgende opdracht uit vanaf een PowerShell-prompt om het OpenSSL-pakket voor Windows x64 te installeren. Het duurt doorgaans ongeveer 5 minuten om de installatie te voltooien.

      .\vcpkg install openssl:x64-windows
      
    3. Voeg deze toe <vcpkg path>\installed\x64-windows\tools\openssl aan de omgevingsvariabele PATH, zodat het openssl.exe-bestand beschikbaar is voor aanroepen.

Scripts voorbereiden in PowerShell

De Git-opslagplaats van Azure IoT Edge bevat scripts die u kunt gebruiken om testcertificaten te genereren. In deze sectie kloont u de IoT Edge-opslagplaats en voert u de scripts uit.

  1. Open een PowerShell-venster in de beheerdersmodus.

  2. Kloon de IoT Edge git-opslagplaats, die scripts bevat om democertificaten te genereren. Gebruik de git clone opdracht of download de ZIP.

    git clone https://github.com/Azure/iotedge.git
    
  3. Maak een map waarin u wilt werken en kopieer de certificaatscripts daar. Alle certificaat- en sleutelbestanden worden in deze map gemaakt.

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

    Als u de opslagplaats als zip-bestand hebt gedownload, is iotedge-master de mapnaam en de rest van het pad hetzelfde.

  4. Schakel PowerShell in om de scripts uit te voeren.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Breng de functies die door de scripts worden gebruikt naar de globale naamruimte van PowerShell.

    . .\ca-certs.ps1
    

    In het PowerShell-venster wordt een waarschuwing weergegeven dat de certificaten die door dit script worden gegenereerd alleen voor testdoeleinden zijn en niet mogen worden gebruikt in productiescenario's.

  6. Controleer of OpenSSL correct is geïnstalleerd en controleer of er geen naamconflicten zijn met bestaande certificaten. Als er problemen zijn, moet in de scriptuitvoer worden beschreven hoe u deze op uw systeem kunt oplossen.

    Test-CACertsPrerequisites
    

Basis-CA-certificaat maken

Voer dit script uit om een basis-CA te genereren die vereist is voor elke stap in dit artikel.

Het basis-CA-certificaat wordt gebruikt om alle andere democertificaten te maken voor het testen van een IoT Edge-scenario. U kunt hetzelfde basis-CA-certificaat blijven gebruiken om democertificaten te maken voor meerdere IoT Edge- of downstreamapparaten.

Als u al één basis-CA-certificaat in uw werkmap hebt, maakt u geen nieuw certificaat. Het nieuwe basis-CA-certificaat overschrijft het oude certificaat en alle downstreamcertificaten die van het oude certificaat zijn gemaakt, werken niet meer. Als u meerdere basis-CA-certificaten wilt, moet u deze in afzonderlijke mappen beheren.

  1. Navigeer naar de werkmap wrkdir waarin u de scripts voor het genereren van certificaten hebt geplaatst.

  2. Maak het basis-CA-certificaat en laat het één tussenliggend certificaat ondertekenen. De certificaten worden allemaal in uw werkmap geplaatst.

    New-CACertsCertChain rsa
    

    Met deze scriptopdracht worden verschillende certificaat- en sleutelbestanden gemaakt, maar wanneer artikelen om het basis-CA-certificaat vragen, gebruikt u het volgende bestand:

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

Dit certificaat is vereist voordat u meer certificaten voor uw IoT Edge-apparaten en downstreamapparaten kunt maken, zoals beschreven in de volgende secties.

Identiteitscertificaat maken voor het IoT Edge-apparaat

IoT Edge-apparaatidentiteitscertificaten worden gebruikt om IoT Edge-apparaten in te richten als u X.509-certificaatverificatie wilt gebruiken. Als u symmetrische sleutel gebruikt voor verificatie bij IoT Hub of DPS, zijn deze certificaten niet nodig en kunt u deze sectie overslaan.

Deze certificaten werken, ongeacht of u handmatige inrichting of automatische inrichting gebruikt via azure IoT Hub Device Provisioning Service (DPS).

Apparaat-id-certificaten gaan in de sectie Inrichten van het configuratiebestand op het IoT Edge-apparaat.

  1. Navigeer naar de werkmap wrkdir met de scripts voor het genereren van certificaten en het basis-CA-certificaat.

  2. Maak het ioT Edge-apparaatidentiteitscertificaat en de persoonlijke sleutel met de volgende opdracht:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    De naam die u aan deze opdracht doorgeeft, is de apparaat-id voor het IoT Edge-apparaat in IoT Hub.

  3. Met de opdracht nieuwe apparaat-id worden verschillende certificaat- en sleutelbestanden gemaakt:

    Type Bestand Beschrijving
    Apparaat-id-certificaat certs\iot-edge-device-identity-<device-id>.cert.pem Ondertekend door het tussenliggende certificaat dat eerder is gegenereerd. Bevat alleen het identiteitscertificaat. Geef in het configuratiebestand op voor afzonderlijke DPS-inschrijving of IoT Hub-inrichting.
    Volledig ketencertificaat certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Bevat de volledige certificaatketen, inclusief het tussenliggende certificaat. Geef in het configuratiebestand op dat IoT Edge aan DPS moet presenteren voor het inrichten van groepsinschrijvingen.
    Persoonlijke sleutel private\iot-edge-device-identity-<device-id>.key.pem Persoonlijke sleutel die is gekoppeld aan het apparaat-id-certificaat. Moet worden opgegeven in het configuratiebestand zolang u een soort certificaatverificatie (vingerafdruk of CA) gebruikt voor DPS of IoT Hub.

Edge-CA-certificaten maken

Deze certificaten zijn vereist voor gatewayscenario's omdat het Edge-CA-certificaat de identiteit verifieert van het IoT Edge-apparaat naar downstreamapparaten. U kunt deze sectie overslaan als u geen downstreamapparaten verbindt met IoT Edge.

Het edge-CA-certificaat is ook verantwoordelijk voor het maken van certificaten voor modules die op het apparaat worden uitgevoerd, maar IoT Edge-runtime kan tijdelijke certificaten maken als edge-CA niet is geconfigureerd. Edge-CA-certificaten gaan in de edge-CA-sectie van het config.toml bestand op het IoT Edge-apparaat. Zie Begrijpen hoe Azure IoT Edge certificaten gebruikt voor meer informatie.

  1. Navigeer naar de werkmap wrkdir met de scripts voor het genereren van certificaten en het basis-CA-certificaat.

  2. Maak het IoT Edge CA-certificaat en de persoonlijke sleutel met de volgende opdracht. Geef een naam op voor het CA-certificaat. De naam die is doorgegeven aan de opdracht New-CACertsEdgeDevice mag niet hetzelfde zijn als de hostnaamparameter in het configuratiebestand of de id van het apparaat in IoT Hub.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Met deze opdracht worden verschillende certificaat- en sleutelbestanden gemaakt. Het volgende certificaat en sleutelpaar moeten worden gekopieerd naar een IoT Edge-apparaat en waarnaar wordt verwezen in het configuratiebestand:

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

Downstreamapparaatcertificaten maken

Deze certificaten zijn vereist voor het instellen van een downstream IoT-apparaat voor een gatewayscenario en willen X.509-verificatie gebruiken met IoT Hub of DPS. Als u symmetrische sleutelverificatie wilt gebruiken, hoeft u geen certificaten te maken voor het downstreamapparaat en kunt u deze sectie overslaan.

Er zijn twee manieren om een IoT-apparaat te verifiëren met X.509-certificaten: met behulp van zelfondertekende certificaten of met behulp van ondertekende certificeringsinstanties (CA).

  • Voor zelfondertekende X.509-verificatie, ook wel vingerafdrukverificatie genoemd, moet u nieuwe certificaten maken om op uw IoT-apparaat te plaatsen. Deze certificaten hebben een vingerafdruk die u deelt met IoT Hub voor verificatie.
  • Voor verificatie met X.509-certificeringsinstantie (CA) hebt u een basis-CA-certificaat nodig dat is geregistreerd in IoT Hub of DPS waarmee u certificaten voor uw IoT-apparaat ondertekent. Elk apparaat dat gebruikmaakt van een certificaat dat is uitgegeven door het basis-CA-certificaat of een van de tussenliggende certificaten, kan worden geverifieerd zolang de volledige keten wordt gepresenteerd door het apparaat.

Met de scripts voor het genereren van certificaten kunt u democertificaten maken om een van deze verificatiescenario's te testen.

Zelfondertekende certificaten

Wanneer u een IoT-apparaat verifieert met zelfondertekende certificaten, moet u apparaatcertificaten maken op basis van het basis-CA-certificaat voor uw oplossing. Vervolgens haalt u een hexadecimale 'vingerafdruk' op uit de certificaten die u aan IoT Hub wilt verstrekken. Uw IoT-apparaat heeft ook een kopie van de apparaatcertificaten nodig, zodat het kan worden geverifieerd met IoT Hub.

  1. Navigeer naar de werkmap wrkdir met de scripts voor het genereren van certificaten en het basis-CA-certificaat.

  2. Maak twee certificaten (primaire en secundaire) voor het downstreamapparaat. Een eenvoudige naamconventie die moet worden gebruikt, is het maken van de certificaten met de naam van het IoT-apparaat en vervolgens het primaire of secundaire label. Voorbeeld:

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

    Met deze scriptopdracht worden verschillende certificaat- en sleutelbestanden gemaakt. Het volgende certificaat en sleutelparen moeten worden gekopieerd naar het downstream-IoT-apparaat en waarnaar wordt verwezen in de toepassingen die verbinding maken met 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. Haal de SHA1-vingerafdruk (een vingerafdruk genoemd in IoT Hub-contexten) op uit elk certificaat. De vingerafdruk is een tekenreeks van 40 hexadecimale tekens. Gebruik de volgende openssl-opdracht om het certificaat weer te geven en de vingerafdruk te zoeken:

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

    Voer deze opdracht twee keer uit, eenmaal voor het primaire certificaat en eenmaal voor het secundaire certificaat. U geeft vingerafdrukken op voor beide certificaten wanneer u een nieuw IoT-apparaat registreert met zelfondertekende X.509-certificaten.

Door CA ondertekende certificaten

Wanneer u een IoT-apparaat verifieert met door CA ondertekende certificaten, moet u het basis-CA-certificaat voor uw oplossing uploaden naar IoT Hub. Gebruik hetzelfde basis-CA-certificaat om apparaatcertificaten op uw IoT-apparaat te maken, zodat het kan worden geverifieerd met IoT Hub.

De certificaten in deze sectie zijn bedoeld voor de stappen in de reeks zelfstudies voor IoT Hub X.509-certificaten. Zie Informatie over openbare-sleutelcryptografie en X.509 Public Key Infrastructure voor de introductie van deze reeks.

  1. Upload het basis-CA-certificaatbestand vanuit uw werkmap naar certs\azure-iot-test-only.root.ca.cert.pemuw IoT-hub.

  2. Als automatische verificatie niet is geselecteerd, gebruikt u de code in Azure Portal om te controleren of u eigenaar bent van dat basis-CA-certificaat.

    New-CACertsVerificationCert "<verification code>"
    
  3. Maak een certificaatketen voor uw downstreamapparaat. Gebruik dezelfde apparaat-id waarmee het apparaat is geregistreerd in IoT Hub.

    New-CACertsDevice "<device id>"
    

    Met deze scriptopdracht worden verschillende certificaat- en sleutelbestanden gemaakt. Het volgende certificaat en sleutelparen moeten worden gekopieerd naar het downstream-IoT-apparaat en waarnaar wordt verwezen in de toepassingen die verbinding maken met 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