Delen via


Certificaatbeheer voor interne communicatie van Azure IoT Operations

Alle communicatie binnen Azure IoT-bewerkingen wordt versleuteld met BEHULP van TLS. Om u te helpen aan de slag te gaan, wordt Azure IoT Operations geïmplementeerd met een standaardhoofd-CA en verlener voor TLS-servercertificaten. U kunt de standaardinstelling gebruiken voor ontwikkelings- en testdoeleinden. Voor een productie-implementatie raden we u aan uw eigen CA-verlener en een enterprise PKI-oplossing te gebruiken.

Standaard zelfondertekend verlener en basis-CA-certificaat voor TLS-servercertificaten

Om u te helpen aan de slag te gaan, wordt Azure IoT Operations geïmplementeerd met een standaard zelfondertekend verlener en basis-CA-certificaat voor TLS-servercertificaten. U kunt deze verlener gebruiken voor ontwikkeling en testen. Azure IoT Operations maakt gebruik van certificaatbeheer voor het beheren van TLS-certificaten en vertrouwensbeheer om vertrouwensbundels te distribueren naar onderdelen.

  • Het CA-certificaat is zelfondertekend en wordt niet vertrouwd door clients buiten Azure IoT Operations. Het onderwerp van het CA-certificaat is CN=Azure IoT Operations Quickstart Root CA - Not for Production. Het CA-certificaat wordt automatisch gedraaid door certificaatbeheer.

  • Het basis-CA-certificaat wordt opgeslagen in een Kubernetes-geheim dat wordt aangeroepen azure-iot-operations-aio-ca-certificate onder de cert-manager naamruimte.

  • Het openbare gedeelte van het basis-CA-certificaat wordt opgeslagen in een ConfigMap die wordt aangeroepen azure-iot-operations-aio-ca-trust-bundle onder de azure-iot-operations naamruimte. U kunt het CA-certificaat ophalen uit de ConfigMap en dit inspecteren met kubectl en openssl. De ConfigMap wordt bijgewerkt door trust-manager wanneer het CA-certificaat wordt gedraaid door certificaatbeheerder.

    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] 
    
  • Standaard is er al een verlener geconfigureerd in de azure-iot-operations namespace aangeroepen azure-iot-operations-aio-certificate-issuer. Deze wordt gebruikt als de algemene verlener voor alle TLS-servercertificaten voor IoT-bewerkingen. MQTT Broker maakt gebruik van een verlener die is gemaakt op basis van hetzelfde CA-certificaat dat is ondertekend door de zelfondertekende verlener om TLS-servercertificaten uit te geven voor de standaard TLS-listener op poort 18883. U kunt de verlener inspecteren met de volgende opdracht:

    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 
    

Bring Your Own Issuer

Voor productie-implementaties raden we u aan Azure IoT Operations in te stellen met een enterprise PKI voor het beheren van certificaten en dat u uw eigen verlener gebruikt die met uw enterprise PKI werkt in plaats van de standaard zelfondertekende verlener te gebruiken om TLS-certificaten uit te geven voor interne communicatie.

Als u Azure IoT Operations wilt instellen met uw eigen verlener, gebruikt u de volgende stappen voordat u een exemplaar implementeert in uw cluster:

  1. Volg de stappen in Het cluster voorbereiden om uw cluster in te stellen.

  2. Installeer cert-manager. Certificaatbeheer beheert TLS-certificaten.

  3. Installeer trust-manager. Stel tijdens het installeren van vertrouwensbeheer de trust namespace instelling in op certificaatbeheer. Voorbeeld:

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

    Trust-manager wordt gebruikt om een vertrouwensbundel te distribueren naar onderdelen.

  4. Maak de Azure IoT Operations-naamruimte.

    kubectl create namespace azure-iot-operations
    
  5. Implementeer een verlener die werkt met certificaatbeheer. Zie cert-managerverleners voor een lijst met alle ondersteunde verleners.

    De verlener kan van het type ClusterIssuer zijn of Issuer. Als u Issuerdeze gebruikt, moet de verlenerresource worden gemaakt in de Azure IoT Operations-naamruimte.

  6. Stel de vertrouwensbundel in de Azure IoT Operations-naamruimte in.

    1. Als u een vertrouwensbundel wilt instellen, maakt u een ConfigMap in de Azure IoT Operations-naamruimte. Plaats het openbare sleutelgedeelte van uw CA-certificaat in de configuratietoewijzing met een sleutelnaam van uw keuze.

    2. Haal het openbare sleutelgedeelte van uw CA-certificaat op. De stappen voor het verkrijgen van de openbare sleutel zijn afhankelijk van de verlener die u kiest.

    3. Maak de ConfigMap. Voorbeeld:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Volg de stappen in Azure IoT-bewerkingen implementeren om te implementeren, met enkele wijzigingen.

    1. Voeg de parameter toe tijdens het --user-trust voorbereiden van het cluster. Voorbeeld:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. Voeg de --trust-settings parameter toe met de benodigde informatie tijdens het implementeren van Azure IoT Operations. Voorbeeld:

    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>