IoT Edge-certificaten beheren
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS is de ondersteunde release. IoT Edge 1.4 LTS is het einde van de levensduur vanaf 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
alsPRIVATE 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.
Haal het basis-CA-certificaat op van een PKI-provider.
Controleer of het certificaat voldoet aan de indelingsvereisten.
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
Zoek in het IoT Edge-configuratiebestand
config.toml
de 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.Stel de
trust_bundle_cert
sleutel in op de locatie van het certificaatbestand.trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
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:
Controleer of het certificaat en de persoonlijke sleutelbestanden voldoen aan de indelingsvereisten.
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
Verleent eigendom aan respectievelijk de certificaatservice
aziotcs
en sleutelserviceaziotks
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
Zoek
config.toml
in de relevante sectie voor het type certificaat dat u wilt configureren. U kunt bijvoorbeeld zoeken naar het trefwoordcert
.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"
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.
Krijg toegang tot een EST-server. Als u geen EST-server hebt, gebruikt u een van de volgende opties om te beginnen met testen:
Maak een EST-testserver met behulp van de stappen in de zelfstudie: Inschrijving configureren via Secure Transport Server voor Azure IoT Edge.
Microsoft werkt samen met GlobalSign om een demo-account te bieden.
Configureer in het configuratiebestand
config.toml
van 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", ]
Geef een standaard-URL op voor de EST-server. Voeg
config.toml
in 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"
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%"
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.
Zoek
config.toml
in de relevante sectie voor het type certificaat dat u wilt configureren. U kunt bijvoorbeeld zoeken naar het trefwoordauto_renew
.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%"
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 threshold kan 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. Deiotedge 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.