Share via


Certificaten beheren voor uw Azure IoT Operations-implementatie

Azure IoT Operations maakt gebruik van TLS om de communicatie tussen alle onderdelen te versleutelen. In dit artikel wordt beschreven hoe u certificaten voor interne en externe communicatie beheert en hoe u uw eigen certificeringsinstantieverlener (CA) kunt gebruiken voor interne communicatie in een productie-implementatie.

Vereiste voorwaarden

  • Als u certificaten voor externe communicatie wilt beheren, hebt u een Azure IoT Operations-exemplaar nodig dat is geïmplementeerd met beveiligde instellingen. Als u Azure IoT Operations met testinstellingen hebt geïmplementeerd, moet u eerst beveiligde instellingen inschakelen.

Certificaten voor interne communicatie beheren

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 CA-verlener gebruikt die met uw enterprise PKI werkt, in plaats van de standaard zelfondertekende uitgever te gebruiken om TLS-certificaten uit te geven voor interne communicatie.

Als u Azure IoT Operations wilt instellen met uw eigen verlener voor interne communicatie, 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>
      

    Opmerking

    De naam van de aangepaste locatie heeft een maximale lengte van 63 tekens.

Certificaten voor externe communicatie beheren

De ervaring voor certificaatbeheer voor externe communicatie maakt gebruik van Azure Key Vault als de oplossing voor beheerde kluizen in de cloud. Certificaten worden als geheimen toegevoegd aan de Key Vault en gesynchroniseerd met de Edge als Kubernetes-geheimen via de Azure Key Vault Secret Store extension.

Connectors gebruiken de ervaring voor certificaatbeheer om clienttoepassingsverificatie te configureren voor externe servers. Zie de connectorspecifieke documentatie voor certificaatbeheer voor meer informatie over het gebruik van certificaten om wederzijdse vertrouwen met externe servers tot stand te brengen.

Wanneer u Azure IoT-bewerkingen met beveiligde instellingen implementeert, kunt u certificaten toevoegen aan Azure Key Vault en deze synchroniseren met het Kubernetes-cluster dat moet worden gebruikt in de lijst met vertrouwens - en verlenerlijstarchieven voor externe verbindingen.

Volg deze stappen om certificaten voor externe communicatie te beheren:

  1. Ga naar de Azure IoT Operations-ervaring en kies uw site en het Azure IoT Operations-exemplaar.

  2. Selecteer Apparaten in het linkernavigatiedeelvenster.

  3. Klik op Certificaten en geheimen beheren.

    Schermopname van de optie Certificaten en geheimen beheren in het linkernavigatiedeelvenster.

  4. Klik op de pagina Certificaten en geheimen op Nieuw certificaat toevoegen.

    Schermopname van de knop Nieuw certificaat toevoegen op de pagina apparaten.

  5. U kunt op twee manieren een nieuw certificaat toevoegen:

    • Certificaat uploaden: uploadt een certificaat dat vervolgens wordt toegevoegd als geheim aan Azure Key Vault en automatisch wordt gesynchroniseerd met het cluster met behulp van de extensie Secret Store.

      • Bekijk de certificaatdetails nadat het is geüpload, om ervoor te zorgen dat u het juiste certificaat hebt voordat u aan Azure Key Vault toevoegt en synchroniseert met het cluster.
      • Gebruik een intuïtieve naam zodat u kunt herkennen welk geheim uw geheim in de toekomst vertegenwoordigt.

      Schermopname van de optie Certificaat uploaden wanneer u een nieuw certificaat toevoegt aan de pagina apparaten.

      Opmerking

      Als u het certificaat uploadt, wordt het geheim niet toegevoegd aan Azure Key Vault en gesynchroniseerd met het cluster. Selecteer Toepassen om de wijzigingen toe te passen.

    • Toevoegen vanuit Azure Key Vault: voeg een bestaand geheim toe uit de Azure Key Vault die moet worden gesynchroniseerd met het cluster.

      Schermopname van de optie Toevoegen vanuit Azure Key Vault bij het toevoegen van een nieuw certificaat aan de pagina apparaten.

      Opmerking

      Zorg ervoor dat u het geheim selecteert dat het certificaat bevat dat u wilt synchroniseren met het cluster. Als u een geheim selecteert dat niet het juiste certificaat is, mislukt de verbinding.

  6. Met behulp van de lijstweergave kunt u de gesynchroniseerde certificaten beheren. U kunt alle gesynchroniseerde certificaten weergeven en met welk certificaatarchief het is gesynchroniseerd:

    Schermopname van de lijst met certificaten op de pagina apparaten en het filteren op vertrouwenslijst en lijst met verleners.

Zie de connectorspecifieke documentatie voor certificaatbeheer voor meer informatie over hoe vertrouwenscertificaten worden beheerd voor specifieke connectors.

U kunt ook gesynchroniseerde certificaten verwijderen. Wanneer u een gesynchroniseerd certificaat verwijdert, wordt alleen het gesynchroniseerde certificaat uit het Kubernetes-cluster verwijderd en wordt de ingesloten geheime verwijzing niet uit Azure Key Vault verwijderd. U moet het certificaatgeheim handmatig verwijderen uit de sleutelkluis.