Udostępnij za pośrednictwem


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 w cert-manager przestrzeni nazw.

  • Publiczna część certyfikatu głównego urzędu certyfikacji jest przechowywana w ConfigMap o nazwie azure-iot-operations-aio-ca-trust-bundle w azure-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-issuerjest już skonfigurowany wystawca azure-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:

  1. Wykonaj kroki opisane w temacie Przygotowywanie klastra do skonfigurowania klastra.

  2. Zainstaluj menedżera certyfikatów. Menedżer certyfikatów zarządza certyfikatami TLS.

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

  4. Utwórz przestrzeń nazw Operacje usługi Azure IoT.

    kubectl create namespace azure-iot-operations
    
  5. 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 lub Issuer. W przypadku korzystania z Issuerusługi zasób wystawcy musi zostać utworzony w przestrzeni nazw Operacje usługi Azure IoT.

  6. Skonfiguruj pakiet zaufania w przestrzeni nazw operacje usługi Azure IoT.

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

    2. Pobierz część klucza publicznego certyfikatu urzędu certyfikacji. Kroki uzyskiwania klucza publicznego zależą od wybranego wystawcy.

    3. Utwórz ConfigMap. Na przykład:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Wykonaj kroki opisane w artykule Wdrażanie operacji usługi Azure IoT w celu wdrożenia z kilkoma zmianami.

    1. --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
      
    2. --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>