Zarządzanie certyfikatami usługi IoT Edge

Dotyczy:Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Azure IoT Edge1.4 jest obsługiwaną wersją. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Wszystkie urządzenia IoT Edge używają certyfikatów do tworzenia bezpiecznych połączeń między środowiskiem uruchomieniowym a dowolnymi modułami uruchomionymi na urządzeniu. Urządzenia usługi IoT Edge działające jako bramy używają tych samych certyfikatów do łączenia się z urządzeniami podrzędnymi.

Uwaga

Termin główny urząd certyfikacji używany w tym artykule odnosi się do certyfikatu najwyższego urzędu w łańcuchu certyfikatów dla rozwiązania IoT. Nie musisz używać katalogu głównego certyfikatu syndyka urzędu certyfikacji ani katalogu głównego urzędu certyfikacji organizacji. Często jest to certyfikat pośredniego urzędu certyfikacji.

Wymagania wstępne

  • Należy zapoznać się z pojęciami w artykule Omówienie sposobu korzystania z certyfikatów przez usługę Azure IoT Edge, w szczególności sposobu korzystania z certyfikatów przez usługę IoT Edge.

  • Urządzenie usługi IoT Edge.

    Jeśli nie masz skonfigurowanego urządzenia usługi IoT Edge, możesz go utworzyć na maszynie wirtualnej platformy Azure. Wykonaj kroki opisane w jednym z tych artykułów szybki start, aby utworzyć wirtualne urządzenie z systemem Linux lub utworzyć wirtualne urządzenie z systemem Windows.

  • Możliwość edytowania pliku config.toml konfiguracji usługi IoT Edge zgodnie z szablonem konfiguracji.

  • config.toml Jeśli szablon nie jest oparty na szablonie, otwórz szablon i skorzystaj z komentarzy wskazówek, aby dodać sekcje konfiguracji zgodnie ze strukturą szablonu.

  • Jeśli masz nową instalację usługi IoT Edge, która nie została skonfigurowana, skopiuj szablon, aby zainicjować konfigurację. Nie używaj tego polecenia, jeśli masz istniejącą konfigurację. Zastępuje on plik.

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

Wymagania dotyczące formatu

Napiwek

  • Certyfikat może być zakodowany w binarnej reprezentacji o nazwie DER (reguły kodowania wyróżniającego) lub tekstowej reprezentacji o nazwie PEM (Privacy Enhanced Mail). Format PEM ma -----BEGIN CERTIFICATE----- nagłówek, po którym następuje kodowany algorytmem BASE64 der, po którym następuje -----END CERTIFICATE----- stopka.
  • Podobnie jak w przypadku certyfikatu, klucz prywatny może być zakodowany w binarnej reprezentacji DER lub tekstowej reprezentacji PEM.
  • Ponieważ PEM jest delineated, można również skonstruować PEM, który łączy zarówno element CERTIFICATE i PRIVATE KEY sekwencyjnie w tym samym pliku.
  • Na koniec certyfikat i klucz prywatny można kodować razem w reprezentacji binarnej o nazwie PKCS#12, która jest szyfrowana przy użyciu opcjonalnego hasła.

Rozszerzenia plików są dowolne i musisz uruchomić file polecenie lub wyświetlić plik zweryfikuj typ. Ogólnie rzecz biorąc, pliki używają następujących konwencji rozszerzeń:

  • .cer jest certyfikatem w formularzu DER lub PEM.
  • .pem jest certyfikatem, kluczem prywatnym lub obydwoma w formularzu PEM.
  • .pfx jest plikiem PKCS#12 .

Usługa IoT Edge wymaga, aby certyfikat i klucz prywatny był:

  • Format PEM
  • Oddzielne pliki
  • W większości przypadków z pełnym łańcuchem

Jeśli otrzymasz .pfx plik od dostawcy infrastruktury kluczy publicznych, prawdopodobnie jest to certyfikat i klucz prywatny zakodowany razem w jednym pliku. Sprawdź, czy jest to typ pliku PKCS#12, używając file polecenia . Plik PKCS#12 .pfx można przekonwertować na pliki PEM przy użyciu polecenia openssl pkcs12.

Jeśli dostawca infrastruktury kluczy publicznych udostępnia .cer plik, może zawierać ten sam certyfikat co .pfx, lub może to być certyfikat wystawiający (główny) dostawcy infrastruktury kluczy publicznych. Aby to sprawdzić, sprawdź plik za openssl x509 pomocą polecenia . Jeśli jest to certyfikat wystawiający:

  • Jeśli ma format DER (binarny), przekonwertuj go na PEM za pomocą polecenia openssl x509 -in cert.cer -out cert.pem.
  • Użyj pliku PEM jako pakietu zaufania. Aby uzyskać więcej informacji na temat pakietu zaufania, zobacz następną sekcję.

Ważne

Infrastruktura PKI powinna obsługiwać klucze bitowe RSA-2048 i klucze EC P-256. Na przykład serwery EST powinny obsługiwać te typy kluczy. Można użyć innych typów kluczy, ale testujemy tylko klucze RSA-2048 bit i KLUCZE EC P-256.

Wymagania dotyczące uprawnień

W poniższej tabeli wymieniono uprawnienia do plików i katalogów wymagane dla certyfikatów usługi IoT Edge. Preferowany katalog dla certyfikatów to /var/aziot/certs/ i /var/aziot/secrets/ dla kluczy.

Plik lub katalog Uprawnienia Właściciel
/var/aziot/certs/ katalog certyfikatów drwxr-xr-x (755) aziotcs
Pliki certyfikatów w programie /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ katalog keys drwx------ (700) aziotks
Pliki kluczy w /var/aziot/secrets/ -wr------- (600) aziotks

Aby utworzyć katalogi, ustaw uprawnienia i ustaw właściciela, uruchom następujące polecenia:

# 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

Dane wyjściowe listy z poprawną własnością i uprawnieniami są podobne do następujących danych wyjściowych:

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

Zarządzanie zaufanym głównym urzędem certyfikacji (pakiet zaufania)

Używanie certyfikatu urzędu certyfikacji z podpisem własnym jako katalogu głównego zaufania w usłudze IoT Edge i modułów jest nazywane pakietem zaufania. Pakiet zaufania jest dostępny dla usługi IoT Edge i modułów do komunikowania się z serwerami. Aby skonfigurować pakiet zaufania, określ jego ścieżkę pliku w pliku konfiguracji usługi IoT Edge.

  1. Pobierz certyfikat głównego urzędu certyfikacji od dostawcy infrastruktury kluczy publicznych.

  2. Sprawdź, czy certyfikat spełnia wymagania dotyczące formatu.

  3. Skopiuj plik PEM i przyznaj usłudze certyfikatów usługi IoT Edge dostęp. Na przykład z katalogiem /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. W pliku config.tomlkonfiguracji usługi IoT Edge znajdź sekcję Certyfikat pakietu zaufania. Jeśli brakuje sekcji, możesz skopiować ją z pliku szablonu konfiguracji.

    Napiwek

    Jeśli plik konfiguracji nie istnieje jeszcze na urządzeniu, użyj /etc/aziot/config.toml.edge.template go jako szablonu, aby go utworzyć.

  5. trust_bundle_cert Ustaw klucz na lokalizację pliku certyfikatu.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Zastosuj konfigurację.

    sudo iotedge config apply
    

Instalowanie głównego urzędu certyfikacji do magazynu certyfikatów systemu operacyjnego

Zainstalowanie certyfikatu w pliku pakietu zaufania udostępnia go modułom kontenera, ale nie hostowanie modułów, takich jak usługa Azure Device Update lub Defender. Jeśli używasz składników na poziomie hosta lub napotkasz inne problemy z protokołem TLS, zainstaluj również certyfikat głównego urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego:

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

sudo update-ca-certificates

Importowanie plików certyfikatu i klucza prywatnego

Usługa IoT Edge może używać istniejących certyfikatów i plików kluczy prywatnych do uwierzytelniania lub zaświadczenia na platformie Azure, wystawiać nowe certyfikaty serwera modułów i uwierzytelniać się na serwerach EST. Aby je zainstalować:

  1. Sprawdź, czy pliki certyfikatu i klucza prywatnego spełniają wymagania dotyczące formatu.

  2. Skopiuj plik PEM na urządzenie usługi IoT Edge, na którym moduły usługi IoT Edge mogą mieć dostęp. Na przykład /var/aziot/ katalog.

    # 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. Przyznaj własność usłudze certyfikatów i usłudze aziotks kluczy usługi aziotcs usługi IoT Edge odpowiednio certyfikatowi i kluczowi prywatnemu.

    # 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. W config.tomlpliku znajdź odpowiednią sekcję dla typu certyfikatu do skonfigurowania. Możesz na przykład wyszukać słowo kluczowe cert.

  5. Korzystając z przykładu z szablonu konfiguracji, skonfiguruj certyfikat tożsamości urządzenia lub pliki urzędu certyfikacji usługi Edge. Przykładowy wzorzec to:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Stosowanie konfiguracji

    sudo iotedge config apply
    

Aby zapobiec błędom po wygaśnięciu certyfikatów, pamiętaj, aby ręcznie zaktualizować pliki i konfigurację przed wygaśnięciem certyfikatu.

Przykład: używanie plików certyfikatów tożsamości urządzenia od dostawcy infrastruktury kluczy publicznych

Zażądaj certyfikatu klienta TLS i klucza prywatnego od dostawcy infrastruktury kluczy publicznych.

Wymagania dotyczące certyfikatu tożsamości urządzenia:

  • Standardowe rozszerzenia certyfikatów klienta: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • Identyfikatory kluczy ułatwiające odróżnienie urzędów certyfikacji wystawiających certyfikaty z tą samą wartością pospolitą dla rotacji certyfikatów urzędu certyfikacji.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always:always

Upewnij się, że nazwa pospolita (CN) jest zgodna z identyfikatorem urządzenia usługi IoT Edge zarejestrowanym w usłudze IoT Hub lub identyfikatorem rejestracji w usłudze DPS. Na przykład w następującym certyfikacie tożsamości urządzenia jest ważne pole, Subject: CN = my-device które musi być zgodne.

Przykładowy certyfikat tożsamości urządzenia:

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

Napiwek

Aby przetestować bez dostępu do plików certyfikatów dostarczonych przez infrastrukturę kluczy publicznych, zobacz Tworzenie certyfikatów demonstracyjnych w celu testowania funkcji urządzeń w celu wygenerowania krótkotrwałego certyfikatu tożsamości urządzenia nieprodukcyjnego i klucza prywatnego.

Przykład konfiguracji podczas aprowizacji za pomocą usługi 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"

Przykład konfiguracji podczas aprowizacji za pomocą usługi 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"

Obciążenie związane z ręcznym zarządzaniem certyfikatami może być ryzykowne i podatne na błędy. W przypadku środowiska produkcyjnego zaleca się używanie usługi IoT Edge z automatycznym zarządzaniem certyfikatami.

Zarządzanie urzędem certyfikacji usługi Edge

Urząd certyfikacji usługi Edge ma dwa różne tryby:

  • Przewodnik Szybki start jest zachowaniem domyślnym. Przewodnik Szybki start jest przeznaczony do testowania i nie nadaje się do produkcji.
  • Tryb produkcyjny wymaga podania własnego źródła dla certyfikatu urzędu certyfikacji usługi Edge i klucza prywatnego.

Szybki start — urząd certyfikacji usługi Edge

Aby ułatwić rozpoczęcie pracy, usługa IoT Edge automatycznie generuje certyfikat urzędu certyfikacji usługi Edge po uruchomieniu po raz pierwszy domyślnie. Ten certyfikat z podpisem własnym jest przeznaczony tylko dla scenariuszy programowania i testowania, a nie środowiska produkcyjnego. Domyślnie certyfikat wygasa po upływie 90 dni. Wygaśnięcie można skonfigurować. To zachowanie jest nazywane urzędem certyfikacji usługi Edge w przewodniku Szybki start.

Szybki start: urząd certyfikacji usługi Edge umożliwia i inne moduły edgeHub usługi IoT Edge mają prawidłowy certyfikat serwera, gdy usługa IoT Edge jest najpierw zainstalowana bez konfiguracji. Certyfikat jest wymagany, edgeHub ponieważ moduły lub urządzenia podrzędne muszą ustanowić bezpieczne kanały komunikacyjne. Bez urzędu certyfikacji przeglądarki Microsoft Edge wprowadzenie byłoby znacznie trudniejsze, ponieważ konieczne byłoby dostarczenie prawidłowego certyfikatu serwera od dostawcy infrastruktury kluczy publicznych lub narzędzi takich jak openssl.

Ważne

Nigdy nie używaj urzędu certyfikacji przeglądarki Szybki start Dla środowiska produkcyjnego, ponieważ lokalnie wygenerowany certyfikat nie jest połączony z infrastrukturą kluczy publicznych.

Zabezpieczenia tożsamości opartej na certyfikatach wynikają z dobrze obsługiwanej infrastruktury kluczy publicznych (infrastruktury), w której certyfikat (dokument) jest tylko składnikiem. Dobrze obsługiwana infrastruktura kluczy publicznych umożliwia definiowanie, aplikację, zarządzanie i wymuszanie zasad zabezpieczeń w celu uwzględnienia, ale nie tylko wystawiania, odwoływania i zarządzania cyklem życia certyfikatów.

Dostosowywanie okresu istnienia dla urzędu certyfikacji usługi Edge w przewodniku Szybki start

Aby skonfigurować wygaśnięcie certyfikatu na wartość inną niż domyślna 90 dni, dodaj wartość w dniach do sekcji Certyfikat urzędu certyfikacji usługi Edge (Szybki start) pliku konfiguracji.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Usuń zawartość /var/lib/aziot/certd/certs folderów i /var/lib/aziot/keyd/keys , aby usunąć wszystkie wcześniej wygenerowane certyfikaty, a następnie zastosuj konfigurację.

Odnawianie urzędu certyfikacji usługi Edge w przewodniku Szybki start

Domyślnie usługa IoT Edge automatycznie odnawia certyfikat urzędu certyfikacji usługi Edge w 80% okresu istnienia certyfikatu. Jeśli na przykład certyfikat ma okres istnienia 90 dni, usługa IoT Edge automatycznie ponownie generuje certyfikat urzędu certyfikacji usługi Edge po 72 dniach od wystawienia.

Aby zmienić logikę automatycznego odnawiania, dodaj następujące ustawienia do sekcji Certyfikat urzędu certyfikacji edge w pliku config.toml. Na przykład:

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

Urząd certyfikacji brzegowy w środowisku produkcyjnym

Po przejściu do scenariusza produkcyjnego lub utworzeniu urządzenia bramy nie można już używać urzędu certyfikacji usługi Edge w przewodniku Szybki start.

Jedną z opcji jest dostarczenie własnych certyfikatów i ręczne zarządzanie nimi. Jednak aby uniknąć ryzykownego i podatnego na błędy ręcznego procesu zarządzania certyfikatami, należy użyć serwera EST, jeśli to możliwe.

Uwaga

Nazwa pospolita certyfikatu urzędu certyfikacji usługi Edge nie może być zgodna z parametrem nazwy hosta urządzenia zdefiniowanym w pliku konfiguracji urządzenia config.toml lub identyfikatorem urządzenia zarejestrowanym w usłudze IoT Hub.

Planowanie odnowienia urzędu certyfikacji usługi Edge

Po odnowieniu certyfikatu urzędu certyfikacji usługi Edge wszystkie certyfikaty wystawione przez niego, takie jak certyfikaty serwera modułu, są generowane ponownie. Aby nadać modułom nowe certyfikaty serwera, usługa IoT Edge ponownie uruchamia wszystkie moduły po odnowieniu certyfikatu urzędu certyfikacji usługi Edge.

Aby zminimalizować potencjalne negatywne skutki ponownego uruchomienia modułu, zaplanuj odnowienie certyfikatu urzędu certyfikacji edge w określonym czasie (na przykład threshold = "10d") i powiadamianie zależności rozwiązania o przestoju.

Przykład: użyj plików certyfikatów urzędu certyfikacji edge od dostawcy infrastruktury kluczy publicznych

Zażądaj następujących plików od dostawcy infrastruktury kluczy publicznych:

  • Certyfikat głównego urzędu certyfikacji infrastruktury kluczy publicznych
  • Certyfikat wystawiający/urzędu certyfikacji i skojarzony klucz prywatny

Aby certyfikat urzędu wystawiającego stał się urzędem certyfikacji edge, musi mieć następujące rozszerzenia:

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

Przykładowy wynik certyfikatu urzędu certyfikacji usługi 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-----

Po otrzymaniu najnowszych plików zaktualizuj pakiet zaufania:

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

Następnie skonfiguruj usługę IoT Edge do używania plików certyfikatu i klucza prywatnego:

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

Jeśli wcześniej użyto innych certyfikatów dla usługi IoT Edge na urządzeniu, usuń pliki z programu /var/lib/aziot/certd/certs i klucze prywatne skojarzone z certyfikatami (nie wszystkie klucze) w programie /var/lib/aziot/keyd/keys. Usługa IoT Edge ponownie utworzy je przy użyciu udostępnionego nowego certyfikatu urzędu certyfikacji.

Takie podejście wymaga ręcznego zaktualizowania plików w miarę wygaśnięcia certyfikatu. Aby uniknąć tego problemu, rozważ użycie funkcji EST do automatycznego zarządzania.

Automatyczne zarządzanie certyfikatami za pomocą serwera EST

Usługa IoT Edge może połączyć się z serwerem rejestracji za pośrednictwem protokołu Secure Transport (EST) na potrzeby automatycznego wystawiania i odnawiania certyfikatów. Korzystanie z est jest zalecane w środowisku produkcyjnym, ponieważ zastępuje potrzebę ręcznego zarządzania certyfikatami, co może być ryzykowne i podatne na błędy. Można go skonfigurować globalnie i zastąpić dla każdego typu certyfikatu.

W tym scenariuszu certyfikat bootstrap i klucz prywatny powinny być długotrwałe i potencjalnie zainstalowane na urządzeniu podczas produkcji. Usługa IoT Edge używa poświadczeń bootstrap do uwierzytelniania na serwerze EST dla początkowego żądania wystawiania certyfikatu tożsamości dla kolejnych żądań i uwierzytelniania w usłudze DPS lub IoT Hub.

  1. Uzyskaj dostęp do serwera EST. Jeśli nie masz serwera EST, użyj jednej z następujących opcji, aby rozpocząć testowanie:

  2. W pliku config.tomlkonfiguracji urządzenia usługi IoT Edge skonfiguruj ścieżkę do zaufanego certyfikatu głównego używanego przez usługę IoT Edge do sprawdzania poprawności certyfikatu TLS serwera EST. Ten krok jest opcjonalny, jeśli serwer EST ma publicznie zaufany główny certyfikat TLS.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Podaj domyślny adres URL serwera EST. W config.tomlpliku dodaj następującą sekcję z adresem URL serwera EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Aby skonfigurować certyfikat EST na potrzeby uwierzytelniania, dodaj następującą sekcję ze ścieżką do certyfikatu i klucza prywatnego:

    [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. Zastosuj zmiany konfiguracji.

    sudo iotedge config apply
    

Ustawienia w sekcji [cert_issuance.est.identity_auto_renew] zostały omówione w następnej sekcji.

Uwierzytelnianie nazwy użytkownika i hasła

Jeśli uwierzytelnianie na serwerze EST przy użyciu certyfikatu nie jest możliwe, możesz zamiast tego użyć wspólnego wpisu tajnego lub nazwy użytkownika i hasła.

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

Konfigurowanie parametrów automatycznego odnawiania

Zamiast ręcznie zarządzać plikami certyfikatów, usługa IoT Edge ma wbudowaną możliwość pobierania i odnawiania certyfikatów przed wygaśnięciem. Odnawianie certyfikatu wymaga metody wystawiania, którą może zarządzać usługa IoT Edge. Rejestracja za pośrednictwem serwera Secure Transport (EST) jest jedną z metod wystawiania, ale usługa IoT Edge może również automatycznie odnawiać urząd certyfikacji szybkiego startu domyślnie. Odnawianie certyfikatu jest konfigurowane na typ certyfikatu.

  1. W config.tomlpliku znajdź odpowiednią sekcję dla typu certyfikatu do skonfigurowania. Możesz na przykład wyszukać słowo kluczowe auto_renew.

  2. Korzystając z przykładu z szablonu konfiguracji, skonfiguruj certyfikat tożsamości urządzenia, urząd certyfikacji przeglądarki Microsoft Edge lub certyfikaty tożsamości EST. Przykładowy wzorzec to:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Stosowanie konfiguracji

    sudo iotege config apply
    

W poniższej tabeli wymieniono każdą opcję w auto_renew programie :

Parametr Opis
rotate_key Określa, czy klucz prywatny powinien zostać obrócony podczas odnawiania certyfikatu przez usługę IoT Edge.
threshold Zestawy, gdy usługa IoT Edge powinna rozpocząć odnawianie certyfikatu. Można go określić jako:
- Wartość procentowa: liczba całkowita między 0 i 100 po której następuje %. Odnawianie rozpoczyna się w stosunku do okresu istnienia certyfikatu. Na przykład w przypadku ustawienia wartości 80%, certyfikat ważny przez 100 dni rozpoczyna odnawianie o 20 dni przed jego wygaśnięciem.
- Czas bezwzględny: liczba całkowita, po której następuje min (minuty) lub day (dni). Odnawianie rozpoczyna się w stosunku do czasu wygaśnięcia certyfikatu. Na przykład po ustawieniu 4day wartości na cztery dni lub 10min przez 10 minut certyfikat rozpoczyna odnawianie w tym czasie przed wygaśnięciem. Aby uniknąć niezamierzonej błędnej konfiguracji, gdy threshold okres istnienia certyfikatu jest większy niż okres istnienia certyfikatu, zalecamy użycie wartości procentowej , jeśli jest to możliwe.
retry określa, jak często należy ponowić próbę odnowienia po awarii. Podobnie jak threshold, można go określić jako wartość procentową lub bezwzględną przy użyciu tego samego formatu.

Przykład: automatyczne odnawianie certyfikatu tożsamości urządzenia za pomocą est

Aby można było używać usług EST i IoT Edge do automatycznego wystawiania i odnawiania certyfikatu tożsamości urządzenia, co jest zalecane w środowisku produkcyjnym, usługa IoT Edge musi aprowizować jako część grupy rejestracji opartej na urzędach certyfikacji usługi DPS. Na przykład:

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

Automatyczne odnawianie urzędu certyfikacji usługi Edge musi być włączone po ustawieniu metody wystawiania na EST. Należy unikać wygaśnięcia urzędu certyfikacji usługi Edge, ponieważ przerywa wiele funkcji usługi IoT Edge. Jeśli sytuacja wymaga całkowitej kontroli nad cyklem życia certyfikatu urzędu certyfikacji edge, zamiast tego użyj ręcznej metody zarządzania urzędu certyfikacji edge.

Nie używaj est ani auto_renew innych metod aprowizacji, w tym ręcznej aprowizacji X.509 w usłudze IoT Hub i DPS z rejestracją indywidualną. Usługa IoT Edge nie może zaktualizować odcisków palca certyfikatu na platformie Azure po odnowieniu certyfikatu, co uniemożliwia ponowne nawiązywanie połączenia z usługą IoT Edge.

Przykład: automatyczne zarządzanie urzędem certyfikacji edge za pomocą est

Użyj automatycznego wystawiania i odnawiania urzędu certyfikacji usługi Edge EST w środowisku produkcyjnym. Po skonfigurowaniu serwera EST można użyć ustawienia globalnego lub przesłonić go podobnie do tego przykładu:

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

Certyfikaty serwera modułów

Demon usługi Edge wystawia certyfikaty serwera modułu i tożsamości do użycia przez moduły usługi Edge. Moduły usługi Edge są odpowiedzialne za odnawianie tożsamości i certyfikatów serwera zgodnie z potrzebami.

Odnowienie

Certyfikaty serwera mogą być wystawiane poza certyfikatem urzędu certyfikacji usługi Edge. Niezależnie od metody wystawiania te certyfikaty muszą zostać odnowione przez moduł. Jeśli tworzysz moduł niestandardowy, musisz zaimplementować logikę odnawiania w module.

Moduł edgeHub obsługuje funkcję odnawiania certyfikatu. Możesz skonfigurować odnawianie certyfikatu serwera modułu edgeHub przy użyciu następujących zmiennych środowiskowych:

  • ServerCertificateRenewAfterInMs: określa czas trwania w milisekundach, gdy certyfikat serwera edgeHub jest odnawiany niezależnie od czasu wygaśnięcia certyfikatu.
  • MaxCheckCertExpiryInMs: ustawia czas trwania w milisekundach, gdy usługa edgeHub sprawdza wygaśnięcie certyfikatu serwera edgeHub. Jeśli zmienna jest ustawiona, sprawdzanie odbywa się niezależnie od czasu wygaśnięcia certyfikatu.

Aby uzyskać więcej informacji na temat zmiennych środowiskowych, zobacz EdgeHub i EdgeAgent zmienne środowiskowe.

Zmiany w wersji 1.2 lub nowszej

  • Nazwa certyfikatu urzędu certyfikacji urządzenia została zmieniona na Certyfikat urzędu certyfikacji usługi Edge.
  • Certyfikat urzędu certyfikacji obciążenia był przestarzały. Teraz menedżer zabezpieczeń usługi IoT Edge generuje certyfikat serwera centrum edgeHub usługi IoT Edge bezpośrednio z certyfikatu urzędu certyfikacji usługi Edge bez pośredniego certyfikatu urzędu certyfikacji obciążenia między nimi.
  • Domyślny plik konfiguracji ma nową nazwę i lokalizację z /etc/iotedge/config.yaml domyślnie /etc/aziot/config.toml . Polecenie iotedge config import może służyć do migrowania informacji o konfiguracji ze starej lokalizacji i składni do nowej.

Następne kroki

Instalowanie certyfikatów na urządzeniu usługi IoT Edge jest niezbędnym krokiem przed wdrożeniem rozwiązania w środowisku produkcyjnym. Dowiedz się więcej o sposobie przygotowania do wdrożenia rozwiązania usługi IoT Edge w środowisku produkcyjnym.