Správa certifikátů IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Všechna zařízení IoT Edge k vytváření zabezpečených připojení mezi modulem runtime a všemi moduly spuštěnými na zařízení využívají certifikáty. Zařízení IoT Edge, která fungují jako brány, používají stejné certifikáty také pro připojení k podřízeným zařízením.

Poznámka:

Termín kořenová certifikační autorita použitá v tomto článku odkazuje na certifikát nejvyšší autority v řetězu certifikátů vašeho řešení IoT. Nemusíte používat kořen certifikátu syndikované certifikační autority ani kořen certifikační autority vaší organizace. Často se jedná o certifikát zprostředkující certifikační autority.

Požadavky

  • Měli byste znát koncepty v tématu Vysvětlení, jak Azure IoT Edge používá certifikáty, zejména jak IoT Edge používá certifikáty.

  • Zařízení IoT Edge.

    Pokud nemáte nastavené zařízení IoT Edge, můžete ho vytvořit ve virtuálním počítači Azure. Postupujte podle kroků v jednom z těchto článků rychlého startu k vytvoření virtuálního zařízení s Linuxem nebo vytvoření virtuálního zařízení s Windows.

  • Možnost upravit konfigurační soubor config.toml IoT Edge podle šablony konfigurace

  • config.toml Pokud vaše šablona není založená na šabloně, otevřete ji a pomocí komentářů přidejte oddíly konfigurace za strukturou šablony.

  • Pokud máte novou instalaci IoT Edge, která nebyla nakonfigurována, zkopírujte šablonu, aby se inicializovala konfigurace. Tento příkaz nepoužívejte, pokud máte existující konfiguraci. Soubor přepíše.

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

Požadavky na formát

Tip

  • Certifikát lze zakódovat do binární reprezentace s názvem DER (kódování DER) nebo textové vyjádření s názvem PEM (Privacy Enhanced Mail). Formát PEM má -----BEGIN CERTIFICATE----- záhlaví následované kódem DER s kódováním base64 následované zápatím -----END CERTIFICATE----- .
  • Podobně jako certifikát může být privátní klíč kódován v binárním kódu DER nebo textové reprezentaci PEM.
  • Vzhledem k tomu, že PEM je delineován, je také možné vytvořit PEM, který kombinuje jak sekvenčně, tak CERTIFICATEPRIVATE KEY i ve stejném souboru.
  • Nakonec je možné certifikát a privátní klíč zakódovat do binární reprezentace s názvem PKCS#12, která je zašifrovaná volitelným heslem.

Přípony souborů jsou libovolné a potřebujete spustit file příkaz nebo zobrazit soubor, abyste ověřili typ. Obecně platí, že soubory používají následující konvence rozšíření:

  • .cer je certifikát ve formuláři DER nebo PEM.
  • .pem je buď certifikát, privátní klíč, nebo obojí ve formuláři PEM.
  • .pfxje soubor PKCS#12.

IoT Edge vyžaduje, aby certifikát a privátní klíč byly:

  • Formát PEM
  • Samostatné soubory
  • Ve většině případů s úplným řetězem

Pokud získáte .pfx soubor od svého poskytovatele PKI, pravděpodobně se certifikát a privátní klíč kódují společně v jednom souboru. Pomocí příkazu ověřte, že se jedná o typ file souboru PKCS#12. Soubor PKCS#12 .pfx můžete převést na soubory PEM pomocí příkazu openssl pkcs12.

Pokud váš poskytovatel PKI poskytuje .cer soubor, může obsahovat stejný certifikát jako .pfxcertifikát nebo může být certifikát vydávající (kořenový) zprostředkovatele PKI. Pokud to chcete ověřit, zkontrolujte soubor pomocí openssl x509 příkazu. Pokud se jedná o vydávající certifikát:

  • Pokud je ve formátu DER (binární), převeďte ho na PEM pomocí openssl x509 -in cert.cer -out cert.pem.
  • Jako sadu důvěryhodnosti použijte soubor PEM. Další informace o sadě důvěryhodnosti najdete v další části.

Důležité

Vaše infrastruktura PKI by měla podporovat klíče RSA-2048 a klíče EC P-256. Například servery EST by měly podporovat tyto typy klíčů. Můžete použít jiné typy klíčů, ale testujeme pouze rsA-2048bitové klíče a klíče EC P-256.

Požadavky na oprávnění

Následující tabulka uvádí oprávnění k souborům a adresářům vyžadovaná pro certifikáty IoT Edge. Upřednostňovaný adresář pro certifikáty je /var/aziot/certs/ a /var/aziot/secrets/ pro klíče.

Soubor nebo adresář Oprávnění Vlastník
/var/aziot/certs/ Adresář certifikátů drwxr-xr-x (755) aziotcs
Soubory certifikátů v /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ adresář klíčů drwx------ (700) aziotks
Klíčové soubory v /var/aziot/secrets/ -wr------- (600) aziotks

Pokud chcete vytvořit adresáře, nastavte oprávnění a nastavte vlastníka, spusťte následující příkazy:

# 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

Výstup seznamu se správným vlastnictvím a oprávněním je podobný následujícímu výstupu:

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

Správa důvěryhodné kořenové certifikační autority (sada důvěryhodných certifikátů)

Použití certifikátu certifikační autority podepsané svým držitelem (CA) jako kořen vztahu důvěryhodnosti se službou IoT Edge a modulů se označuje jako sada důvěryhodných certifikátů. Sada důvěryhodnosti je k dispozici pro IoT Edge a moduly pro komunikaci se servery. Pokud chcete nakonfigurovat sadu důvěryhodnosti, zadejte cestu k souboru v konfiguračním souboru IoT Edge.

  1. Získejte certifikát kořenové certifikační autority od zprostředkovatele PKI.

  2. Zkontrolujte, jestli certifikát splňuje požadavky na formát.

  3. Zkopírujte soubor PEM a udělte certifikační službě IoT Edge přístup. Například s adresářem /var/aziot/certs :

    # 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. V konfiguračním souboru config.tomlIoT Edge vyhledejte část Certifikát svazku důvěryhodnosti. Pokud oddíl chybí, můžete ho zkopírovat ze souboru šablony konfigurace.

    Tip

    Pokud konfigurační soubor na vašem zařízení ještě neexistuje, vytvořte /etc/aziot/config.toml.edge.template ho pomocí šablony.

  5. trust_bundle_cert Nastavte klíč na umístění souboru certifikátu.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Použijte konfiguraci.

    sudo iotedge config apply
    

Instalace kořenové certifikační autority do úložiště certifikátů operačního systému

Instalace certifikátu do souboru sady důvěryhodných certifikátů zpřístupňuje moduly kontejnerů, ale ne k hostování modulů, jako je Azure Device Update nebo Defender. Pokud používáte komponenty na úrovni hostitele nebo narazíte na jiné problémy s protokolem TLS, nainstalujte také kořenový certifikát certifikační autority do úložiště certifikátů operačního systému:

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

sudo update-ca-certificates

Import souborů certifikátu a privátního klíče

IoT Edge může použít existující certifikáty a soubory privátního klíče k ověření nebo ověření v Azure, vydávání nových certifikátů serveru modulů a ověřování na serverech EST. Instalace:

  1. Zkontrolujte, jestli soubory certifikátu a privátního klíče splňují požadavky na formát.

  2. Zkopírujte soubor PEM do zařízení IoT Edge, ke kterým mají moduly IoT Edge přístup. Například adresář /var/aziot/ .

    # 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. Udělte vlastnictví certifikační službě aziotcs IoT Edge a službě aziotks klíčů k certifikátu a privátnímu klíči v uvedeném pořadí.

    # 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. V config.tomlčásti vyhledejte odpovídající část pro typ certifikátu, který chcete nakonfigurovat. Můžete například vyhledat klíčové slovo cert.

  5. Pomocí příkladu ze šablony konfigurace nakonfigurujte certifikát identity zařízení nebo soubory certifikační autority Edge. Vzor příkladu je:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Použití konfigurace

    sudo iotedge config apply
    

Pokud chcete zabránit chybám při vypršení platnosti certifikátů, nezapomeňte soubory a konfiguraci aktualizovat ručně před vypršením platnosti certifikátu.

Příklad: Použití souborů certifikátů identity zařízení od zprostředkovatele PKI

Požádejte o klientský certifikát TLS a privátní klíč od zprostředkovatele PKI.

Požadavky na certifikát identity zařízení:

  • Standardní rozšíření klientských certifikátů: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • Identifikátory klíčů, které pomáhají rozlišovat mezi vydáváním certifikačních autorit se stejným cn pro rotaci certifikátů certifikační autority.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

Ujistěte se, že běžný název (CN) odpovídá ID zařízení IoT Edge zaregistrované ve službě IoT Hub nebo ID registrace ve službě DPS. Například v následujícím certifikátu identity zařízení je důležité pole, Subject: CN = my-device které se musí shodovat.

Příklad certifikátu identity zařízení:

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

Pokud chcete testovat bez přístupu k souborům certifikátů poskytovaných pkI, přečtěte si téma Vytvoření ukázkových certifikátů pro testování funkcí zařízení za účelem vygenerování krátkodobého neprodukčního certifikátu identity zařízení a privátního klíče.

Příklad konfigurace při zřizování ve službě 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"

Příklad konfigurace při zřizování pomocí 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"

Režie při ruční správě certifikátů může být riziková a náchylná k chybám. V produkčním prostředí se doporučuje používat IoT Edge s automatickou správou certifikátů.

Správa certifikační autority Edge

Certifikační autorita Edge má dva různé režimy:

  • Rychlý start je výchozí chování. Rychlý start je určený pro testování a není vhodný pro produkční prostředí.
  • Produkční režim vyžaduje, abyste zadali vlastní zdroj pro certifikát certifikační autority Edge a privátní klíč.

Rychlý start certifikační autority Edge

Aby vám pomohl začít, IoT Edge automaticky vygeneruje certifikát certifikační autority Edge při prvním spuštění ve výchozím nastavení. Tento certifikát podepsaný svým držitelem je určený jenom pro scénáře vývoje a testování, nikoli pro produkční prostředí. Ve výchozím nastavení platnost certifikátu vyprší po 90 dnech. Můžete nakonfigurovat vypršení platnosti. Toto chování se označuje jako certifikační autorita Edge pro rychlý start.

Certifikační autorita Edge pro Rychlý start umožňuje edgeHub a další moduly IoT Edge mít platný certifikát serveru při první instalaci IoT Edge bez konfigurace. Certifikát je nutný, edgeHub protože moduly nebo podřízená zařízení potřebují vytvořit zabezpečené komunikační kanály. Bez certifikační autority Edge pro rychlý start by bylo zahájení výrazně obtížnější, protože byste potřebovali poskytnout platný certifikát serveru od poskytovatele PKI nebo pomocí nástrojů, jako je openssl.

Důležité

Nikdy nepoužívejte certifikační autoritu Edge pro rychlý start pro produkční prostředí, protože místně vygenerovaný certifikát není připojený k infrastruktuře veřejných klíčů.

Zabezpečení identity založené na certifikátech je odvozeno z dobře fungující infrastruktury veřejných klíčů (infrastruktury), ve které je certifikát (dokument) pouze součástí. Dobře provozovaný infrastruktura veřejných klíčů umožňuje definovat, aplikace, správu a vynucování zásad zabezpečení, aby zahrnovaly nejen vystavování, odvolávání certifikátů a správu životního cyklu.

Přizpůsobení životnosti pro certifikační autoritu Edge pro rychlý start

Pokud chcete nakonfigurovat vypršení platnosti certifikátu na něco jiného, než je výchozí 90 dní, přidejte hodnotu ve dnech do oddílu Certifikát certifikační autority Edge (Rychlý start) konfiguračního souboru.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Odstraňte obsah /var/lib/aziot/certd/certs a složky, /var/lib/aziot/keyd/keys abyste odebrali všechny dříve vygenerované certifikáty a pak konfiguraci použili.

Prodloužení platnosti certifikační autority pro Edge pro rychlý start

IoT Edge ve výchozím nastavení automaticky prodlouží certifikát certifikační autority Edge pro rychlý start při 80 % doby života certifikátu. Pokud má například certifikát 90denní životnost, IoT Edge automaticky vygeneruje certifikát certifikační autority Edge za 72 dnů od vystavení.

Pokud chcete změnit logiku automatického prodlužování platnosti, přidejte následující nastavení do části Certifikát certifikační autority Edge v části config.toml. Příklad:

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

Certifikační autorita Edge v produkčním prostředí

Jakmile přejdete do produkčního scénáře nebo chcete vytvořit zařízení brány, už nemůžete používat certifikační autoritu Edge pro rychlý start.

Jednou z možností je zadat vlastní certifikáty a spravovat je ručně. Pokud se ale chcete vyhnout rizikovému a náchylnému ručnímu procesu správy certifikátů, použijte server EST, kdykoli je to možné.

Upozornění

Běžný název certifikátu certifikační autority Edge nemůže odpovídat parametru názvu hostitele zařízení definovanému v konfiguračním souboru zařízení config.toml nebo ID zařízení zaregistrované ve službě IoT Hub.

Plánování prodloužení platnosti certifikační autority Edge

Když se certifikát certifikační autority Edge prodlouží, všechny certifikáty, které vydala, jako jsou certifikáty serveru modulu, se znovu vygenerují. Aby moduly získaly nové certifikáty serveru, IoT Edge restartuje všechny moduly, když se certifikát certifikační autority Edge prodlouží.

Pokud chcete minimalizovat potenciální negativní účinky restartování modulu, naplánujte obnovení certifikátu certifikační autority Edge v konkrétní době (například threshold = "10d") a upozorněte závislé na řešení výpadku.

Příklad: Použití souborů certifikátů certifikační autority Edge od zprostředkovatele PKI

Požádejte poskytovatele infrastruktury veřejných klíčů o následující soubory:

  • Kořenový certifikát certifikační autority PKI
  • Vydávající certifikát nebo certifikát certifikační autority a přidružený privátní klíč

Aby se vydávající certifikát certifikační autority stal certifikační autoritou Edge, musí mít tato rozšíření:

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

Příklad výsledného certifikátu certifikační autority Edge:

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

Jakmile obdržíte nejnovější soubory, aktualizujte sadu důvěryhodnosti:

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

Potom nakonfigurujte IoT Edge tak, aby používal certifikát a soubory privátního klíče:

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

Pokud jste dříve na zařízení použili nějaké jiné certifikáty pro IoT Edge, odstraňte soubory v /var/lib/aziot/certd/certs a privátní klíče přidružené k certifikátům (ne všechny klíče) v /var/lib/aziot/keyd/keys. IoT Edge je znovu vytvoří s novým certifikátem certifikační autority, který jste zadali.

Tento přístup vyžaduje, abyste soubory při vypršení platnosti certifikátu aktualizovali ručně. Pokud se chcete tomuto problému vyhnout, zvažte použití EST pro automatickou správu.

Automatická správa certifikátů pomocí serveru EST

IoT Edge umožňuje rozhraní se serverem EST (Secure Transport) pro automatické vystavování a prodlužování platnosti certifikátů. Použití EST se doporučuje pro produkční prostředí, protože nahrazuje potřebu ruční správy certifikátů, což může být rizikové a náchylné k chybám. Dá se nakonfigurovat globálně a přepsat pro každý typ certifikátu.

V tomto scénáři se očekává, že certifikát bootstrap a privátní klíč budou dlouhodobé a potenciálně nainstalované na zařízení během výroby. IoT Edge používá přihlašovací údaje bootstrap k ověření na serveru EST pro počáteční požadavek k vydání certifikátu identity pro následné požadavky a k ověřování pro DPS nebo IoT Hub.

  1. Získejte přístup k serveru EST. Pokud server EST nemáte, spusťte testování pomocí jedné z následujících možností:

  2. V konfiguračním souboru config.tomlzařízení IoT Edge nakonfigurujte cestu k důvěryhodnému kořenovému certifikátu, který IoT Edge používá k ověření certifikátu TLS serveru EST. Tento krok je volitelný, pokud má server EST veřejně důvěryhodný kořenový certifikát TLS.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Zadejte výchozí adresu URL serveru EST. Do config.tomlpole přidejte následující část s adresou URL serveru EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Pokud chcete nakonfigurovat certifikát EST pro ověřování, přidejte následující část s cestou k certifikátu a privátnímu klíči:

    [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. Použijte změny konfigurace.

    sudo iotedge config apply
    

Nastavení [cert_issuance.est.identity_auto_renew] jsou popsána v další části.

Ověřování pomocí uživatelského jména a hesla

Pokud ověřování na serveru EST pomocí certifikátu není možné, můžete místo toho použít sdílený tajný klíč nebo uživatelské jméno a heslo.

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

Konfigurace parametrů automatického prodlužování

Místo ruční správy souborů certifikátů má IoT Edge integrovanou možnost získat a obnovit certifikáty před vypršením platnosti. Obnovení certifikátu vyžaduje metodu vystavování, kterou může IoT Edge spravovat. Registrace přes server EST (Secure Transport) je jednou metodou vystavování, ale IoT Edge může automaticky obnovit certifikační autoritu pro rychlý start ve výchozím nastavení. Prodlužování platnosti certifikátu se konfiguruje podle typu certifikátu.

  1. V config.tomlčásti vyhledejte odpovídající část pro typ certifikátu, který chcete nakonfigurovat. Můžete například vyhledat klíčové slovo auto_renew.

  2. Pomocí příkladu ze šablony konfigurace nakonfigurujte certifikát identity zařízení, certifikační autoritu Edge nebo certifikáty identit EST. Vzor příkladu je:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Použití konfigurace

    sudo iotege config apply
    

Následující tabulka uvádí, co každá možnost auto_renew dělá:

Parametr Popis
rotate_key Určuje, jestli se má privátní klíč otočit, když IoT Edge obnoví certifikát.
threshold Nastaví, kdy má IoT Edge začít obnovovat certifikát. Dá se zadat takto:
- Procento: celé číslo mezi 0 a 100 následované %. Obnovení začíná vzhledem k době životnosti certifikátu. Pokud je například nastavená hodnota 80%, certifikát, který je platný po dobu 100 dnů, začíná prodlužování platnosti 20 dní před vypršením jeho platnosti.
- Absolutní čas: celé číslo následované min (minuty) nebo day (dny). Prodloužení začíná vzhledem k době vypršení platnosti certifikátu. Pokud je například nastavená na 4day čtyři dny nebo 10min 10 minut, certifikát se začne obnovovat v té době před vypršením platnosti. Abyste se vyhnuli neúmyslné chybné konfiguraci, kdy threshold je větší než životnost certifikátu, doporučujeme místo toho použít procento , kdykoli je to možné.
retry určuje, jak často se má obnovení opakovat při selhání. Podobně lze thresholdho zadat jako procento nebo absolutní čas pomocí stejného formátu.

Příklad: Automatické obnovení certifikátu identity zařízení pomocí EST

Pokud chcete používat EST a IoT Edge k automatickému vystavování a obnovování certifikátů identit zařízení, které se doporučuje pro produkční prostředí, musí IoT Edge zřídit jako součást skupiny registrací na základě certifikační autority DPS. Příklad:

## 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%"

Automatické prodlužování platnosti certifikační autority Edge musí být povolené, když je metoda vystavování nastavená na EST. Vypršení platnosti certifikační autority Edge se musí vyhnout, protože přeruší mnoho funkcí IoT Edge. Pokud situace vyžaduje úplnou kontrolu nad životním cyklem certifikátu certifikační autority Edge, použijte místo toho ruční metodu správy certifikační autority Edge.

Nepoužívejte EST ani auto_renew s jinými metodami zřizování, včetně ručního zřizování X.509 se službou IoT Hub a DPS s jednotlivými registracemi. IoT Edge nemůže aktualizovat kryptografické otisky certifikátů v Azure při obnovení certifikátu, což brání opětovnému připojení ioT Edge.

Příklad: automatická správa certifikační autority Edge s využitím EST

V produkčním prostředí používejte automatické vystavování a obnovení certifikační autority EST. Po nakonfigurování serveru EST můžete použít globální nastavení nebo ho přepsat podobně jako v tomto příkladu:

[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%"

Certifikáty serveru modulů

Proces démon Edge vydává server modulů a certifikáty identit pro použití v modulech Edge. Moduly Edge zůstávají zodpovědností obnovit jejich identity a certifikáty serveru podle potřeby.

Prodloužení

Certifikáty serveru mohou být vystaveny z certifikátu certifikační autority Edge. Bez ohledu na metodu vystavování musí modul tyto certifikáty obnovit. Pokud vyvíjíte vlastní modul, musíte v modulu implementovat logiku obnovení.

Modul EdgeHub podporuje funkci prodloužení platnosti certifikátu. Obnovení certifikátu serveru modulu EdgeHub můžete nakonfigurovat pomocí následujících proměnných prostředí:

  • ServerCertificateRenewAfterInMs: Nastaví dobu trvání v milisekundách při obnovení certifikátu serveru EdgeHub bez ohledu na dobu vypršení platnosti certifikátu.
  • MaxCheckCertExpiryInMs: Nastaví dobu trvání v milisekundách, když služba EdgeHub kontroluje vypršení platnosti certifikátu serveru EdgeHub. Pokud je proměnná nastavená, provede se kontrola bez ohledu na dobu vypršení platnosti certifikátu.

Další informace o proměnných prostředí najdete v tématu o proměnných prostředí EdgeHub a EdgeAgent.

Změny ve verzi 1.2 a novější

  • Certifikát certifikační autority zařízení se přejmenoval na certifikát certifikační autority Edge.
  • Certifikát certifikační autority úlohy byl zastaralý. Správce zabezpečení IoT Edge teď vygeneruje certifikát serveru centra edgeHub IoT Edge přímo z certifikátu certifikační autority Edge bez certifikátu certifikační autority zprostředkující úlohy mezi nimi.
  • Výchozí konfigurační soubor má ve výchozím nastavení nový název a umístění /etc/iotedge/config.yaml/etc/aziot/config.toml . Pomocí iotedge config import příkazu můžete migrovat informace o konfiguraci ze starého umístění a syntaxe do nového.

Další kroky

Instalace certifikátů na zařízení IoT Edge je nezbytný krok před nasazením řešení v produkčním prostředí. Přečtěte si další informace o tom, jak připravit nasazení řešení IoT Edge v produkčním prostředí.