Zarządzanie certyfikatami usługi IoT Edge
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
Ważne
Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. 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
iPRIVATE 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.
Pobierz certyfikat głównego urzędu certyfikacji od dostawcy infrastruktury kluczy publicznych.
Sprawdź, czy certyfikat spełnia wymagania dotyczące formatu.
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
W pliku
config.toml
konfiguracji 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ć.trust_bundle_cert
Ustaw klucz na lokalizację pliku certyfikatu.trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
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ć:
Sprawdź, czy pliki certyfikatu i klucza prywatnego spełniają wymagania dotyczące formatu.
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
Przyznaj własność usłudze certyfikatów i usłudze
aziotks
kluczy usługiaziotcs
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
W
config.toml
pliku znajdź odpowiednią sekcję dla typu certyfikatu do skonfigurowania. Możesz na przykład wyszukać słowo kluczowecert
.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"
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.
Uzyskaj dostęp do serwera EST. Jeśli nie masz serwera EST, użyj jednej z następujących opcji, aby rozpocząć testowanie:
Utwórz testowy serwer EST, wykonując kroki opisane w artykule Samouczek: konfigurowanie rejestracji za pośrednictwem bezpiecznego serwera transportu dla usługi Azure IoT Edge.
Firma Microsoft współpracuje z globalsign, aby udostępnić konto demonstracyjne.
W pliku
config.toml
konfiguracji 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", ]
Podaj domyślny adres URL serwera EST. W
config.toml
pliku dodaj następującą sekcję z adresem URL serwera EST:[cert_issuance.est.urls] default = "https://example.org/.well-known/est"
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%"
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.
W
config.toml
pliku znajdź odpowiednią sekcję dla typu certyfikatu do skonfigurowania. Możesz na przykład wyszukać słowo kluczoweauto_renew
.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%"
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
. Polecenieiotedge 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.