Zarządzanie certyfikatami na potrzeby wewnętrznej komunikacji operacji usługi Azure IoT
Cała komunikacja w ramach operacji usługi Azure IoT jest szyfrowana przy użyciu protokołu TLS. Aby ułatwić rozpoczęcie pracy, operacje usługi Azure IoT są wdrażane przy użyciu domyślnego głównego urzędu certyfikacji i wystawcy dla certyfikatów serwera TLS. Możesz użyć domyślnej konfiguracji na potrzeby programowania i testowania. W przypadku wdrożenia produkcyjnego zalecamy użycie własnego wystawcy urzędu certyfikacji i rozwiązania infrastruktury kluczy publicznych przedsiębiorstwa.
Domyślny wystawca z podpisem własnym i certyfikat głównego urzędu certyfikacji dla certyfikatów serwera TLS
Aby ułatwić rozpoczęcie pracy, operacje usługi Azure IoT są wdrażane przy użyciu domyślnego wystawcy z podpisem własnym i certyfikatu głównego urzędu certyfikacji dla certyfikatów serwera TLS. Tego wystawcy można użyć do programowania i testowania. Operacje usługi Azure IoT używają menedżera certyfikatów do zarządzania certyfikatami TLS i menedżera zaufania w celu dystrybucji pakietów zaufania do składników.
Certyfikat urzędu certyfikacji jest z podpisem własnym i nie jest zaufany przez żadnych klientów spoza operacji usługi Azure IoT. Podmiotem certyfikatu urzędu certyfikacji jest
CN=Azure IoT Operations Quickstart Root CA - Not for Production
. Certyfikat urzędu certyfikacji jest automatycznie obracany przez menedżera certyfikatów.Certyfikat głównego urzędu certyfikacji jest przechowywany w kluczu tajnym kubernetes wywoływanym
azure-iot-operations-aio-ca-certificate
wcert-manager
przestrzeni nazw.Publiczna część certyfikatu głównego urzędu certyfikacji jest przechowywana w ConfigMap o nazwie
azure-iot-operations-aio-ca-trust-bundle
wazure-iot-operations
przestrzeni nazw. Możesz pobrać certyfikat urzędu certyfikacji z obiektu ConfigMap i sprawdzić go za pomocą narzędzia kubectl i openssl. Obiekt ConfigMap jest aktualizowany przez menedżera zaufania, gdy certyfikat urzędu certyfikacji jest obracany przez menedżera certyfikatów.kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
Certificate: Data: Version: 3 (0x2) Serial Number: <SERIAL-NUMBER> Signature Algorithm: sha256WithRSAEncryption Issuer: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production Validity Not Before: Sep 18 20:42:19 2024 GMT Not After : Sep 18 20:42:19 2025 GMT Subject: O=Microsoft, CN=Azure IoT Operations Quickstart Root CA - Not for Production Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: <MODULUS> Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: <SUBJECT-KEY-IDENTIFIER> Signature Algorithm: sha256WithRSAEncryption [Signature]
Domyślnie w nazwie
azure-iot-operations-aio-certificate-issuer
jest już skonfigurowany wystawcaazure-iot-operations namespace
. Jest on używany jako wspólny wystawca dla wszystkich certyfikatów serwera TLS dla operacji IoT. Broker MQTT używa wystawcy utworzonego na podstawie tego samego certyfikatu urzędu certyfikacji, który jest podpisany przez wystawcę z podpisem własnym do wystawiania certyfikatów serwera TLS dla domyślnego odbiornika TLS na porcie 18883. Wystawcę można sprawdzić za pomocą następującego polecenia:kubectl get clusterissuer azure-iot-operations-aio-certificate-issuer -o yaml
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: creationTimestamp: "2024-09-18T20:42:17Z" generation: 1 name: azure-iot-operations-aio-certificate-issuer resourceVersion: "36665" uid: 592700a6-95e0-4788-99e4-ea93934bd330 spec: ca: secretName: azure-iot-operations-aio-ca-certificate status: conditions: - lastTransitionTime: "2024-09-18T20:42:22Z" message: Signing CA verified observedGeneration: 1 reason: KeyPairVerified status: "True" type: Ready
Przynieś własnego wystawcę
W przypadku wdrożeń produkcyjnych zalecamy skonfigurowanie operacji usługi Azure IoT za pomocą infrastruktury kluczy publicznych przedsiębiorstwa w celu zarządzania certyfikatami oraz posiadania własnego wystawcy współpracującego z infrastrukturą kluczy publicznych przedsiębiorstwa zamiast używania domyślnego wystawcy z podpisem własnym do wystawiania certyfikatów TLS na potrzeby komunikacji wewnętrznej.
Aby skonfigurować operacje usługi Azure IoT przy użyciu własnego wystawcy, przed wdrożeniem wystąpienia w klastrze wykonaj następujące kroki:
Wykonaj kroki opisane w temacie Przygotowywanie klastra do skonfigurowania klastra.
Zainstaluj menedżera certyfikatów. Menedżer certyfikatów zarządza certyfikatami TLS.
Zainstaluj menedżera zaufania. Podczas instalowania menedżera zaufania ustaw wartość
trust namespace
cert-manager. Na przykład:helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
Menedżer zaufania służy do dystrybucji pakietu zaufania do składników.
Utwórz przestrzeń nazw Operacje usługi Azure IoT.
kubectl create namespace azure-iot-operations
Wdróż wystawcę, który współpracuje z menedżerem certyfikatów. Aby uzyskać listę wszystkich obsługiwanych wystawców, zobacz wystawcy menedżera certyfikatów.
Wystawca może być typu
ClusterIssuer
lubIssuer
. W przypadku korzystania zIssuer
usługi zasób wystawcy musi zostać utworzony w przestrzeni nazw Operacje usługi Azure IoT.Skonfiguruj pakiet zaufania w przestrzeni nazw operacje usługi Azure IoT.
Aby skonfigurować pakiet zaufania, utwórz element ConfigMap w przestrzeni nazw Operacje usługi Azure IoT. Umieść część klucza publicznego certyfikatu urzędu certyfikacji na mapie konfiguracji z wybraną nazwą klucza.
Pobierz część klucza publicznego certyfikatu urzędu certyfikacji. Kroki uzyskiwania klucza publicznego zależą od wybranego wystawcy.
Utwórz ConfigMap. Na przykład:
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Wykonaj kroki opisane w artykule Wdrażanie operacji usługi Azure IoT w celu wdrożenia z kilkoma zmianami.
--user-trust
Dodaj parametr podczas przygotowywania klastra. Na przykład:az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME> -g <RESOURCE_GROUP> --user-trust
--trust-settings
Dodaj parametr z niezbędnymi informacjami podczas wdrażania operacji usługi Azure IoT. Na przykład:
az iot ops create --subscription <SUBSCRIPTION_ID> -g <RESOURCE_GROUP> --cluster <CLUSTER_NAME> --custom-location <CUSTOM_LOCATION> -n <INSTANCE_NAME> --sr-resource-id <SCHEMAREGISTRY_RESOURCE_ID> --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>