Sdílet prostřednictvím


Správa certifikátů pro interní komunikaci operací Azure IoT

Veškerá komunikace v rámci operací Azure IoT se šifruje pomocí protokolu TLS. Abyste mohli začít, nasadí se operace Azure IoT s výchozí kořenovou certifikační autoritou a vystavitelem pro certifikáty serveru TLS. Pro účely vývoje a testování můžete použít výchozí nastavení. Pro produkční nasazení doporučujeme použít vlastního vystavitele certifikační autority a podnikové řešení PKI.

Výchozí vystavitel podepsaný svým držitelem a kořenový certifikát certifikační autority pro certifikáty serveru TLS

Aby vám to pomohlo začít, nasadí se operace Azure IoT s výchozím vystavitelem podepsaným svým držitelem a kořenovým certifikátem certifikační autority pro certifikáty serveru TLS. Tento vystavitel můžete použít pro vývoj a testování. Operace Azure IoT používají nástroj cert-manager ke správě certifikátů TLS a správce důvěryhodnosti k distribuci sad důvěryhodnosti do komponent.

  • Certifikát certifikační autority je podepsaný svým držitelem a není důvěryhodný pro žádné klienty mimo provoz Azure IoT. Subjektem certifikátu certifikační autority je CN=Azure IoT Operations Quickstart Root CA - Not for Production. Certifikát certifikační autority se automaticky otočí správcem certifikátů.

  • Kořenový certifikát certifikační autority je uložený v tajném kódu Kubernetes volaném azure-iot-operations-aio-ca-certificate pod oborem cert-manager názvů.

  • Veřejná část kořenového certifikátu certifikační autority je uložena v objektu ConfigMap volaném azure-iot-operations-aio-ca-trust-bundle pod oborem azure-iot-operations názvů. Certifikát certifikační autority můžete načíst z objektu ConfigMap a zkontrolovat ho pomocí kubectl a openssl. Objekt ConfigMap se aktualizuje správcem důvěryhodnosti při obměně certifikátu certifikační autority nástrojem cert-manager.

    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] 
    
  • Ve výchozím nastavení je volaný azure-iot-operations-aio-certificate-issuerjiž vystavitel nakonfigurovaný azure-iot-operations namespace . Používá se jako společný vystavitel pro všechny certifikáty serveru TLS pro operace IoT. Zprostředkovatel MQTT používá vystavitele vytvořeného ze stejného certifikátu certifikační autority podepsaného vystavitelem podepsaným svým držitelem k vydávání certifikátů serveru TLS pro výchozí naslouchací proces TLS na portu 18883. Vystavitele můžete zkontrolovat pomocí následujícího příkazu:

    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 
    

Používání vlastního vystavitele

V případě produkčních nasazení doporučujeme nastavit operace Azure IoT s podnikovou pkI pro správu certifikátů a použít vlastní vystavitele, který funguje s podnikovou pkI místo použití výchozího vystavitele podepsaného svým držitelem k vydávání certifikátů TLS pro interní komunikaci.

Pokud chcete nastavit operace Azure IoT s vlastním vystavitelem, před nasazením instance do clusteru postupujte následovně:

  1. Postupujte podle kroků v části Příprava clusteru a nastavte cluster.

  2. Nainstalujte nástroj cert-manager. Cert-manager spravuje certifikáty TLS.

  3. Nainstalujte správce důvěryhodnosti. Při instalaci správce důvěryhodnosti nastavte trust namespace na cert-manager. Příklad:

    helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
    

    Správce důvěryhodnosti se používá k distribuci sady důvěryhodnosti komponentám.

  4. Vytvořte obor názvů operací Azure IoT.

    kubectl create namespace azure-iot-operations
    
  5. Nasaďte vystavitele, který funguje s nástrojem cert-manager. Seznam všechpodporovaných

    Vystavitel může být typu ClusterIssuer nebo Issuer. Pokud používáte Issuerprostředek vystavitele, musí se vytvořit v oboru názvů Azure IoT Operations.

  6. Nastavte sadu důvěryhodnosti v oboru názvů operací Azure IoT.

    1. Pokud chcete nastavit sadu důvěryhodnosti, vytvořte v oboru názvů Operací Azure IoT objekt ConfigMap. Část veřejného klíče certifikátu certifikační autority umístěte do mapy konfigurace s názvem klíče podle vašeho výběru.

    2. Získejte část veřejného klíče certifikátu certifikační autority. Postup získání veřejného klíče závisí na zvoleném vystaviteli.

    3. Vytvořte objekt ConfigMap. Příklad:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Podle kroků v části Nasazení operací Azure IoT proveďte nasazení s několika změnami.

    1. --user-trust Přidejte parametr při přípravě clusteru. Příklad:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. --trust-settings Při nasazování operací Azure IoT přidejte parametr s potřebnými informacemi. Příklad:

    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>