IoT Edge-certificaten beheren

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.

Alle IoT Edge-apparaten gebruiken certificaten voor het maken van beveiligde verbindingen tussen de runtime en alle modules die op het apparaat worden uitgevoerd. IoT Edge-apparaten die werken als gateways gebruiken dezelfde certificaten om ook verbinding te maken met hun downstreamapparaten.

Notitie

De term basis-CA die in dit artikel wordt gebruikt, verwijst naar het hoogste certificeringsinstantiecertificaat in de certificaatketen voor uw IoT-oplossing. U hoeft niet de certificaathoofdmap van een gesyndiceerde certificeringsinstantie of de basis van de certificeringsinstantie van uw organisatie te gebruiken. Vaak is het eigenlijk een tussenliggend CA-certificaat.

Vereisten

  • U moet bekend zijn met de concepten in Begrijpen hoe Azure IoT Edge certificaten gebruikt, met name hoe IoT Edge certificaten gebruikt.

  • Een IoT Edge-apparaat.

    Als u geen IoT Edge-apparaat hebt ingesteld, kunt u er een maken in een virtuele Azure-machine. Volg de stappen in een van deze quickstart-artikelen voor het maken van een virtueel Linux-apparaat of het maken van een virtueel Windows-apparaat.

  • Mogelijkheid om het IoT Edge-configuratiebestand config.toml te bewerken na de configuratiesjabloon.

  • Als de config.toml sjabloon niet is gebaseerd op de sjabloon, opent u de sjabloon en gebruikt u de richtlijnen met opmerkingen om configuratiesecties toe te voegen na de structuur van de sjabloon.

  • Als u een nieuwe IoT Edge-installatie hebt die niet is geconfigureerd, kopieert u de sjabloon om de configuratie te initialiseren. Gebruik deze opdracht niet als u een bestaande configuratie hebt. Het bestand wordt overschreven.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

Indelingsvereisten

Tip

  • Een certificaat kan worden gecodeerd in een binaire weergave met de naam DER (Distinguished Encoding Rules) of een tekstuele weergave met de naam PEM (Privacy Enhanced Mail). De PEM-indeling heeft een -----BEGIN CERTIFICATE----- koptekst gevolgd door de base64-gecodeerde DER, gevolgd door een -----END CERTIFICATE----- voettekst.
  • Net als bij het certificaat kan de persoonlijke sleutel worden gecodeerd in binaire DER of tekstuele representatie PEM.
  • Omdat PEM is afgelijnd, is het ook mogelijk om een PEM te maken die zowel het CERTIFICATE als PRIVATE KEY opeenvolgende in hetzelfde bestand combineert.
  • Ten slotte kunnen het certificaat en de persoonlijke sleutel worden gecodeerd in een binaire weergave met de naam PKCS#12, die is versleuteld met een optioneel wachtwoord.

Bestandsextensies zijn willekeurig en u moet de file opdracht uitvoeren of het bestandstype controleren. In het algemeen gebruiken bestanden de volgende extensieconventies:

  • .cer is een certificaat in DER- of PEM-formulier.
  • .pem is een certificaat, persoonlijke sleutel of beide in PEM-formulier.
  • .pfx is een PKCS#12-bestand .

Voor IoT Edge moet het certificaat en de persoonlijke sleutel het volgende zijn:

  • PEM-indeling
  • Afzonderlijke bestanden
  • In de meeste gevallen, met de volledige keten

Als u een .pfx bestand van uw PKI-provider krijgt, zijn het certificaat en de persoonlijke sleutel waarschijnlijk samen gecodeerd in één bestand. Controleer of het een PKCS#12-bestandstype is met behulp van de file opdracht. U kunt een PKCS#12-bestand .pfx converteren naar PEM-bestanden met behulp van de opdracht openssl pkcs12.

Als uw PKI-provider een .cer bestand levert, bevat deze mogelijk hetzelfde certificaat als het .pfx, of het is mogelijk het verlenen (basiscertificaat) van de PKI-provider. Controleer het bestand met de openssl x509 opdracht om dit te controleren. Als het het verlenende certificaat is:

  • Als deze de DER-indeling (binair) heeft, converteert u deze naar PEM met openssl x509 -in cert.cer -out cert.pem.
  • Gebruik het PEM-bestand als de vertrouwensbundel. Zie de volgende sectie voor meer informatie over de vertrouwensbundel.

Belangrijk

Uw PKI-infrastructuur moet RSA-2048-bits sleutels en EC P-256-sleutels ondersteunen. Uw EST-servers moeten bijvoorbeeld deze sleuteltypen ondersteunen. U kunt andere sleuteltypen gebruiken, maar we testen alleen RSA-2048-bits sleutels en EC P-256-sleutels.

Machtigingsvereisten

De volgende tabel bevat de bestands- en mapmachtigingen die vereist zijn voor de IoT Edge-certificaten. De voorkeursmap voor de certificaten is /var/aziot/certs/ en /var/aziot/secrets/ voor sleutels.

Bestand of map Machtigingen Eigenaar
/var/aziot/certs/ map met certificaten drwxr-xr-x (755) aziotcs
Certificaatbestanden in /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ map sleutels drwx------ (700) aziotks
Sleutelbestanden in /var/aziot/secrets/ -wr------- (600) aziotks

Voer de volgende opdrachten uit om de directory's te maken, de machtigingen in te stellen en de eigenaar in te stellen:

# If the certificate and keys directories don't exist, create, set ownership, and set permissions
sudo mkdir -p /var/aziot/certs
sudo chown aziotcs:aziotcs /var/aziot/certs
sudo chmod 755 /var/aziot/certs

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

De uitvoer van de lijst met het juiste eigendom en de juiste machtiging is vergelijkbaar met de volgende uitvoer:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

Vertrouwde basis-CA beheren (vertrouwensbundel)

Het gebruik van een zelfondertekend certificeringsinstantiecertificaat (CA) als basis voor vertrouwen met IoT Edge en modules wordt ook wel vertrouwensbundel genoemd. De vertrouwensbundel is beschikbaar voor IoT Edge en modules om te communiceren met servers. Als u de vertrouwensbundel wilt configureren, geeft u het bestandspad op in het IoT Edge-configuratiebestand.

  1. Haal het basis-CA-certificaat op van een PKI-provider.

  2. Controleer of het certificaat voldoet aan de indelingsvereisten.

  3. Kopieer het PEM-bestand en geef toegang tot de certificaatservice van IoT Edge. Bijvoorbeeld met /var/aziot/certs map:

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. Zoek in het IoT Edge-configuratiebestand config.tomlde sectie Vertrouwensbundelcertificaat . Als de sectie ontbreekt, kunt u deze kopiëren vanuit het configuratiesjabloonbestand.

    Tip

    Als het configuratiebestand nog niet op uw apparaat bestaat, gebruikt /etc/aziot/config.toml.edge.template u dit als sjabloon om er een te maken.

  5. Stel de trust_bundle_cert sleutel in op de locatie van het certificaatbestand.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Pas de configuratie toe.

    sudo iotedge config apply
    

Basis-CA installeren in het certificaatarchief van het besturingssysteem

Als u het certificaat installeert in het vertrouwensbundelbestand, wordt het beschikbaar gemaakt voor containermodules, maar niet voor het hosten van modules zoals Azure Device Update of Defender. Als u onderdelen op hostniveau gebruikt of andere TLS-problemen ondervindt, installeert u ook het basis-CA-certificaat in het certificaatarchief van het besturingssysteem:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

Certificaat- en persoonlijke sleutelbestanden importeren

IoT Edge kan bestaande certificaten en persoonlijke-sleutelbestanden gebruiken om te verifiëren of te bevestigen bij Azure, nieuwe moduleservercertificaten uitgeven en verifiëren bij EST-servers. Ze te installeren:

  1. Controleer of het certificaat en de persoonlijke sleutelbestanden voldoen aan de indelingsvereisten.

  2. Kopieer het PEM-bestand naar het IoT Edge-apparaat waar IoT Edge-modules toegang hebben. Bijvoorbeeld de /var/aziot/ map.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. Verleent eigendom aan respectievelijk de certificaatservice aziotcs en sleutelservice aziotks van IoT Edge aan het certificaat en de persoonlijke sleutel.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. Zoek config.tomlin de relevante sectie voor het type certificaat dat u wilt configureren. U kunt bijvoorbeeld zoeken naar het trefwoord cert.

  5. Configureer met behulp van het voorbeeld van de configuratiesjabloon het apparaat-id-certificaat of edge-CA-bestanden. Het voorbeeldpatroon is:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. De configuratie toepassen

    sudo iotedge config apply
    

Als u fouten wilt voorkomen wanneer certificaten verlopen, moet u de bestanden en configuratie handmatig bijwerken voordat het certificaat verloopt.

Voorbeeld: Apparaat-id-certificaatbestanden van PKI-provider gebruiken

Vraag een TLS-clientcertificaat en een persoonlijke sleutel aan bij uw PKI-provider.

Certificaatvereisten voor apparaat-id's:

  • Standaard clientcertificaatextensies: extendedKeyUsage = clientAuth keyUsage = kritiek, digitalSignature
  • Sleutel-id's om onderscheid te maken tussen verlenende CA's met dezelfde CN voor ca-certificaatrotatie.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

Zorg ervoor dat de algemene naam (CN) overeenkomt met de IoT Edge-apparaat-id die is geregistreerd bij IoT Hub of registratie-id met DPS. In het volgende certificaat voor apparaat-id's Subject: CN = my-device is bijvoorbeeld het belangrijke veld dat moet overeenkomen.

Voorbeeld van apparaat-id-certificaat:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Tip

Als u wilt testen zonder toegang tot certificaatbestanden van een PKI, raadpleegt u Democertificaten maken om apparaatfuncties te testen om een certificaat voor niet-productieapparaatidentiteit en persoonlijke sleutel te genereren.

Configuratievoorbeeld bij het inrichten met IoT Hub:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Configuratievoorbeeld bij het inrichten met DPS:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Overhead met handmatig certificaatbeheer kan riskant en foutgevoelig zijn. Voor productie wordt het gebruik van IoT Edge met automatisch certificaatbeheer aanbevolen.

Edge-CA beheren

Edge-CA heeft twee verschillende modi:

  • Quickstart is het standaardgedrag. Quickstart is bedoeld voor testen en niet geschikt voor productie.
  • Voor de productiemodus moet u uw eigen bron opgeven voor edge-CA-certificaat en persoonlijke sleutel.

Quickstart edge-CA

Om u te helpen aan de slag te gaan, genereert IoT Edge automatisch een Edge-CA-certificaat wanneer het voor het eerst wordt gestart. Dit zelfondertekende certificaat is alleen bedoeld voor ontwikkelings- en testscenario's, niet voor productie. Standaard verloopt het certificaat na 90 dagen. Vervaldatum kan worden geconfigureerd. Dit gedrag wordt aangeduid als quickstart edge-CA.

Met De Quickstart Edge-CA kunnen edgeHub en andere IoT Edge-modules een geldig servercertificaat hebben wanneer IoT Edge voor het eerst wordt geïnstalleerd zonder configuratie. Het certificaat is nodig edgeHub omdat modules of downstreamapparaten beveiligde communicatiekanalen moeten opzetten. Zonder de quickstart edge-CA zou het aan de slag aanzienlijk moeilijker zijn omdat u een geldig servercertificaat van een PKI-provider of met hulpprogramma's als openssl.

Belangrijk

Gebruik nooit de QuickStart Edge-CA voor productie omdat het lokaal gegenereerde certificaat daarin niet is verbonden met een PKI.

De beveiliging van een identiteit op basis van certificaten is afgeleid van een goed functionerende PKI (de infrastructuur) waarin het certificaat (een document) slechts een onderdeel is. Met een goed functionerende PKI kunnen definities, toepassingen, beheer en afdwinging van beveiligingsbeleid worden opgenomen, maar niet beperkt tot certificatenuitgifte, intrekking en levenscyclusbeheer.

Levensduur aanpassen voor quickstart Edge-CA

Als u de vervaldatum van het certificaat wilt configureren voor iets anders dan de standaard 90 dagen, voegt u de waarde in dagen toe aan de sectie Edge CA-certificaat (Quickstart) van het configuratiebestand.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Verwijder de inhoud van de /var/lib/aziot/certd/certs en /var/lib/aziot/keyd/keys mappen om eerder gegenereerde certificaten te verwijderen en pas vervolgens de configuratie toe.

Quickstart edge-CA vernieuwen

Standaard wordt in IoT Edge automatisch het edge-CA-certificaat van de quickstart vernieuwd wanneer het certificaat 80% van de levensduur heeft. Als een certificaat bijvoorbeeld een levensduur van 90 dagen heeft, genereert IoT Edge het Edge CA-certificaat automatisch na uitgifte van 72 dagen.

Als u de logica voor automatisch verlengen wilt wijzigen, voegt u de volgende instellingen toe aan de sectie Edge CA-certificaat in config.toml. Voorbeeld:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

Edge-CA in productie

Wanneer u overstapt op een productiescenario of als u een gatewayapparaat wilt maken, kunt u de Edge-CA voor quickstart niet meer gebruiken.

Een optie is om uw eigen certificaten op te geven en deze handmatig te beheren. Als u echter het riskante en foutgevoelige handmatige certificaatbeheerproces wilt voorkomen, gebruikt u waar mogelijk een EST-server.

Let op

De algemene naam (CN) van het Edge CA-certificaat kan niet overeenkomen met de hostnaamparameter van het apparaat die is gedefinieerd in het configuratiebestand config.toml of de apparaat-id die is geregistreerd in IoT Hub.

Verlenging van Edge-CA plannen

Wanneer het Edge CA-certificaat wordt vernieuwd, worden alle certificaten die het heeft uitgegeven, zoals moduleservercertificaten, opnieuw gegenereerd. Als u de modules nieuwe servercertificaten wilt geven, start IoT Edge alle modules opnieuw op wanneer het Edge CA-certificaat wordt vernieuwd.

Als u potentiële negatieve gevolgen van het opnieuw opstarten van de module wilt minimaliseren, moet u het Edge-CA-certificaat op een bepaald tijdstip (bijvoorbeeld threshold = "10d") verlengen en afhankelijken van de oplossing informeren over de downtime.

Voorbeeld: Edge CA-certificaatbestanden van PKI-provider gebruiken

Vraag de volgende bestanden aan bij uw PKI-provider:

  • Het basis-CA-certificaat van de PKI
  • Een verlenend/CA-certificaat en de bijbehorende persoonlijke sleutel

Voordat het verlenende CA-certificaat edge-CA wordt, moet het de volgende extensies hebben:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

Voorbeeld van het edge-CA-resultaatcertificaat:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Zodra u de meest recente bestanden hebt ontvangen, werkt u de vertrouwensbundel bij:

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

Configureer vervolgens IoT Edge om het certificaat en de persoonlijke sleutelbestanden te gebruiken:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

Als u eerder andere certificaten voor IoT Edge op het apparaat hebt gebruikt, verwijdert u de bestanden in /var/lib/aziot/certd/certs en de persoonlijke sleutels die zijn gekoppeld aan certificaten (niet alle sleutels) in /var/lib/aziot/keyd/keys. IoT Edge maakt deze opnieuw met het nieuwe CA-certificaat dat u hebt opgegeven.

Voor deze aanpak moet u de bestanden handmatig bijwerken wanneer het certificaat verloopt. U kunt dit probleem voorkomen door EST te gebruiken voor automatisch beheer.

Automatisch certificaatbeheer met EST-server

IoT Edge kan een interface hebben met een INSCHRIJVING via EEN EST-server (Secure Transport) voor automatische certificaatuitgifte en verlenging. Het gebruik van EST wordt aanbevolen voor productie omdat het de noodzaak voor handmatig certificaatbeheer vervangt, wat riskant en foutgevoelig kan zijn. Het kan globaal worden geconfigureerd en overschreven voor elk certificaattype.

In dit scenario worden het bootstrap-certificaat en de persoonlijke sleutel naar verwachting langdurig en mogelijk op het apparaat geïnstalleerd tijdens de productie. IoT Edge gebruikt de bootstrapreferenties om te verifiëren bij de EST-server voor de eerste aanvraag om een identiteitscertificaat uit te geven voor volgende aanvragen en voor verificatie bij DPS of IoT Hub.

  1. Krijg toegang tot een EST-server. Als u geen EST-server hebt, gebruikt u een van de volgende opties om te beginnen met testen:

  2. Configureer in het configuratiebestand config.tomlvan het IoT Edge-apparaat het pad naar een vertrouwd basiscertificaat dat door IoT Edge wordt gebruikt om het TLS-certificaat van de EST-server te valideren. Deze stap is optioneel als de EST-server een openbaar vertrouwd TLS-certificaat heeft.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Geef een standaard-URL op voor de EST-server. Voeg config.tomlin de volgende sectie de volgende sectie toe met de URL van de EST-server:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Als u het EST-certificaat voor verificatie wilt configureren, voegt u de volgende sectie toe met het pad naar het certificaat en de persoonlijke sleutel:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. Pas de configuratiewijzigingen toe.

    sudo iotedge config apply
    

De instellingen in [cert_issuance.est.identity_auto_renew] worden behandeld in de volgende sectie.

Verificatie van gebruikersnaam en wachtwoord

Als verificatie voor EST-server met behulp van certificaat niet mogelijk is, kunt u in plaats daarvan een gedeeld geheim of gebruikersnaam en wachtwoord gebruiken.

[cert_issuance.est.auth]
username = "username"
password = "password"

Parameters voor automatisch verlengen configureren

In plaats van de certificaatbestanden handmatig te beheren, beschikt IoT Edge over de ingebouwde mogelijkheid om certificaten op te halen en te vernieuwen voordat deze verlopen. Voor certificaatvernieuwing is een uitgiftemethode vereist die IoT Edge kan beheren. Inschrijving via DE EST-server (Secure Transport) is één uitgiftemethode, maar IoT Edge kan de quickstart-CA ook standaard automatisch vernieuwen. Certificaatvernieuwing wordt geconfigureerd per type certificaat.

  1. Zoek config.tomlin de relevante sectie voor het type certificaat dat u wilt configureren. U kunt bijvoorbeeld zoeken naar het trefwoord auto_renew.

  2. Configureer met behulp van het voorbeeld van de configuratiesjabloon het certificaat voor apparaatidentiteit, edge-CA of EST-identiteitscertificaten. Het voorbeeldpatroon is:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. De configuratie toepassen

    sudo iotege config apply
    

In de volgende tabel ziet u wat elke optie doet auto_renew :

Parameter Description
rotate_key Hiermee bepaalt u of de persoonlijke sleutel moet worden gedraaid wanneer IoT Edge het certificaat verlengt.
threshold Wordt ingesteld wanneer IoT Edge het certificaat moet vernieuwen. Deze kan worden opgegeven als:
- Percentage: geheel getal tussen 0 en 100 gevolgd door %. Verlenging begint ten opzichte van de levensduur van het certificaat. Wanneer dit bijvoorbeeld is ingesteld 80%, begint een certificaat dat 100 dagen geldig is, met verlenging op 20 dagen voordat het verloopt.
- Absolute tijd: geheel getal gevolgd door min (minuten) of day (dagen). Verlenging begint ten opzichte van de verlooptijd van het certificaat. Wanneer het certificaat bijvoorbeeld is ingesteld op 4day vier dagen of 10min tien minuten, wordt het certificaat op dat moment vernieuwd voordat het verloopt. Om onbedoelde onjuiste configuratie te voorkomen wanneer de levensduur van het threshold certificaat groter is dan de levensduur van het certificaat, wordt u aangeraden in plaats daarvan waar mogelijk een percentage te gebruiken.
retry bepaalt hoe vaak de verlenging opnieuw moet worden uitgevoerd bij een fout. Het thresholdkan op dezelfde manier worden opgegeven als een percentage of absolute tijd met dezelfde notatie.

Voorbeeld: apparaat-id-certificaat automatisch vernieuwen met EST

Als u EST en IoT Edge wilt gebruiken voor het automatisch uitgeven en vernieuwen van apparaatidentiteitencertificaten, wat wordt aanbevolen voor productie, moet IoT Edge worden ingericht als onderdeel van een op DPS CA gebaseerde inschrijvingsgroep. Voorbeeld:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Automatische verlenging voor Edge-CA moet zijn ingeschakeld wanneer de uitgiftemethode is ingesteld op EST. Het verlopen van de Edge-CA moet worden vermeden omdat er veel IoT Edge-functies worden verbroken. Als voor een situatie de volledige controle over de levenscyclus van edge-CA-certificaten is vereist, gebruikt u in plaats daarvan de handmatige Edge-CA-beheermethode .

Gebruik EST niet of auto_renew met andere inrichtingsmethoden, waaronder handmatige X.509-inrichting met IoT Hub en DPS met afzonderlijke inschrijving. IoT Edge kan certificaatvingerafdrukken niet bijwerken in Azure wanneer een certificaat wordt vernieuwd, waardoor IoT Edge niet opnieuw verbinding kan maken.

Voorbeeld: automatisch Edge CA-beheer met EST

Gebruik automatische UITGIFTE van EST Edge CA en verlenging voor productie. Zodra de EST-server is geconfigureerd, kunt u de globale instelling gebruiken of deze overschrijven zoals in dit voorbeeld:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

Moduleservercertificaten

Edge-daemon geeft moduleserver- en identiteitscertificaten voor gebruik door Edge-modules. Het blijft de verantwoordelijkheid van Edge-modules om hun identiteits- en servercertificaten zo nodig te vernieuwen.

Verlenging

Servercertificaten kunnen worden uitgegeven via het Edge CA-certificaat. Ongeacht de uitgiftemethode moeten deze certificaten worden vernieuwd door de module. Als u een aangepaste module ontwikkelt, moet u de vernieuwingslogica in uw module implementeren.

De EdgeHub-module ondersteunt een functie voor certificaatvernieuwing. U kunt de verlenging van het edgeHub-moduleservercertificaat configureren met behulp van de volgende omgevingsvariabelen:

  • ServerCertificateRenewAfterInMs: Hiermee stelt u de duur in milliseconden in wanneer het edgeHub-servercertificaat wordt vernieuwd, ongeacht de verlooptijd van het certificaat.
  • MaxCheckCertExpiryInMs: Hiermee stelt u de duur in milliseconden in wanneer de EdgeHub-service controleert of het edgeHub-servercertificaat verloopt. Als de variabele is ingesteld, gebeurt de controle ongeacht de verlooptijd van het certificaat.

Zie De omgevingsvariabelen EdgeHub en EdgeAgent voor meer informatie over de omgevingsvariabelen.

Wijzigingen in 1.2 en hoger

  • De naam van het CA-certificaat van het apparaat is gewijzigd als Edge-CA-certificaat.
  • Het CA-certificaat van de workload is afgeschaft. Nu genereert ioT Edge-beveiligingsbeheer het IoT Edge-hubservercertificaat edgeHub rechtstreeks vanuit het Edge-CA-certificaat, zonder het tussenliggende CA-certificaat van de werkbelasting ertussen.
  • Het standaardconfiguratiebestand heeft een nieuwe naam en locatie, van /etc/iotedge/config.yaml naar /etc/aziot/config.toml standaard. De iotedge config import opdracht kan worden gebruikt om configuratiegegevens van de oude locatie en syntaxis naar de nieuwe te migreren.

Volgende stappen

Het installeren van certificaten op een IoT Edge-apparaat is een noodzakelijke stap voordat u uw oplossing in productie implementeert. Meer informatie over het voorbereiden van de implementatie van uw IoT Edge-oplossing in productie.