Freigeben über


Verwalten von Zertifikaten für Ihre Azure IoT Operations-Bereitstellung

Azure IoT Operations verwendet TLS zum Verschlüsseln der Kommunikation zwischen allen Komponenten. In diesem Artikel wird beschrieben, wie Sie Zertifikate für interne und externe Kommunikation verwalten und wie Sie Ihre eigene Zertifizierungsstelle (CA) für die interne Kommunikation in einem Produktionseinsatz nutzen können.

Voraussetzungen

Zum Verwalten von Zertifikaten für externe Kommunikation benötigen Sie eine Azure IoT Operations-Instanz, die mit sicheren Einstellungen bereitgestellt wird. Wenn Sie Azure IoT Operations mit Testeinstellungen bereitgestellt haben, müssen Sie zuerst sichere Einstellungen aktivieren.

Verwalten von Zertifikaten für interne Kommunikation

Alle Kommunikationen innerhalb von Azure IoT Operations werden mit TLS verschlüsselt. Um Ihnen den Einstieg zu erleichtern, wird Azure IoT Einsatz mit einer Standardstammzertifizierungsstelle und einem Aussteller für TLS-Serverzertifikate bereitgestellt. Sie können das Standardsetup für Entwicklungs- und Testzwecke verwenden. Für eine Produktionsbereitstellung empfehlen wir die Verwendung Ihres eigenen Ca-Ausstellers und einer Unternehmens-PKI-Lösung.

Standardmäßiges selbstsigniertes Aussteller- und Stammzertifizierungsstellenzertifikat für TLS-Serverzertifikate

Um Ihnen den Einstieg zu erleichtern, wird „Azure IoT Einsatz“ mit einem standardmäßigen selbstsignierten Aussteller und einem Stamm-CA-Zertifikat für TLS-Serverzertifikate bereitgestellt. Sie können diesen Zertifikataussteller für Entwicklungs- und Testzwecke nutzen. Azure IoT Einsatz verwendet cert-manager zum Verwalten von TLS-Zertifikaten und trust-manager zum Verteilen von Vertrauenspaketen an Komponenten.

  • Das Zertifizierungsstellenzertifikat ist selbstsigniert und wird von jeglichen Clients außerhalb von Azure IoT Operations als nicht vertrauenswürdig eingestuft. Der Betreff des ZS-Zertifikats lautet CN=Azure IoT Operations Quickstart Root CA - Not for Production. Das ZS-Zertifikat wird von cert-manager automatisch rotiert.

  • Das Zertifikat der Stammzertifizierungsstelle wird in einem Kubernetes-Geheimnis namens azure-iot-operations-aio-ca-certificate im Namespace cert-manager gespeichert.

  • Der öffentliche Teil des ZS-Zertifikats wird in einer ConfigMap namens azure-iot-operations-aio-ca-trust-bundle unter dem Namespace azure-iot-operations gespeichert. Sie können das Zertifizierungsstellenzertifikat aus der ConfigMap abrufen und mit kubectl und openssl überprüfen. Die ConfigMap wird von trust-manager aktualisiert, wenn das Zertifizierungsstellenzertifikat von cert-manager rotiert wird.

    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] 
    
  • Standardmäßig ist bereits ein Aussteller namens azure-iot-operations namespace im Namespace azure-iot-operations-aio-certificate-issuer konfiguriert. Er wird als gemeinsamer Aussteller für alle TLS-Serverzertifikate für IoT Einsatz verwendet. Der MQTT-Broker verwendet einen Aussteller, der aus demselben Signaturzertifikat erstellt wurde, das vom selbstsignierten Aussteller signiert wurde, um TLS-Serverzertifikate für den Standard-TLS-Listener auf Port 18883 auszustellen. Sie können den Zertifikataussteller mit dem folgenden Befehl überprüfen:

    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 
    

Nutzen Sie Ihren eigenen Zertifikataussteller

Für Produktionsbereitstellungen empfehlen wir, Azure IoT Operations mit einer Unternehmens-PKI zum Verwalten von Zertifikaten einzurichten und Ihren eigenen Zertifizierungsstellenherausgeber zu verwenden, der mit Ihrer Unternehmens-PKI funktioniert, anstatt den standardmäßigen selbstsignierten Aussteller zum Ausgeben von TLS-Zertifikaten für die interne Kommunikation zu verwenden.

Wenn Sie Azure IoT Operations mit Ihrem eigenen Aussteller für interne Kommunikation einrichten möchten, führen Sie die folgenden Schritte aus, bevor Sie eine Instanz in Ihrem Cluster bereitstellen:

  1. Führen Sie die Schritte unter Vorbereiten des Clusters aus, um das Cluster einzurichten.

  2. Installieren Sie cert-manager. Der Cert-Manager verwaltet TLS-Zertifikate.

  3. Installieren Sie trust-manager. Legen Sie beim Installieren des Trust-Managers trust namespace auf Cert-Manager fest. Beispiel:

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

    Der Trust-Manager wird verwendet, um ein Trust-Bundle an Komponenten zu verteilen.

  4. Erstellen Sie den Azure IoT Operations-Namespace.

    kubectl create namespace azure-iot-operations
    
  5. Stellen Sie einen Zertifikataussteller bereit, der mit Cert-Manager funktioniert. Eine Liste aller unterstützten Zertifikataussteller finden Sie unter Zertifikataussteller für Cert-Manager.

    Der Zertifikataussteller kann vom Typ ClusterIssuer oder Issuer. Bei Verwendung von Issuer muss die Ausstellerressource im Azure IoT Operations-Namespace erstellt werden.

  6. Richten Sie das Trust-Bundle im Azure IoT Operations-Namespace ein.

    1. Um ein Trust-Bundle einzurichten, erstellen Sie eine ConfigMap im Azure IoT Operations-Namespace. Platzieren Sie den öffentlichen Schlüsselteil Ihres Zertifizierungsstellenzertifikats in der Konfigurationszuordnung mit einem Schlüsselnamen Ihrer Wahl.

    2. Rufen Sie den öffentlichen Schlüsselteil Ihres Zertifizierungsstellenzertifikats ab. Die Schritte zum Abrufen des öffentlichen Schlüssels hängen vom ausgewählten Zertifikataussteller ab.

    3. Erstellen Sie die ConfigMap. Beispiel:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Führen Sie die Schritte in Bereitstellen von Azure IoT-Vorgängen für die Bereitstellung mit einigen Änderungen aus.

    1. Fügen Sie den --user-trust-Parameter beim Vorbereiten des Clusters hinzu. Beispiel:

      az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME>  -g <RESOURCE_GROUP> --user-trust
      
    2. Fügen Sie den --trust-settings-Parameter mit den erforderlichen Informationen hinzu, während Sie Azure IoT Operations bereitstellen. Beispiel:

      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>
      

    Hinweis

    Der Name des benutzerdefinierten Speicherorts hat eine maximale Länge von 63 Zeichen.

Verwalten von Zertifikaten für externe Kommunikation

Azure IoT Einsatz verwendet Azure Key Vault als verwaltete Tresorlösung in der Cloud und die Azure Key Vault Secret Store-Erweiterung für Kubernetes, um Geheimnisse aus der Cloud zu synchronisieren und am Edge als Kubernetes-Geheimnisse zu speichern. Sie fügen Ihre Zertifikate als geheime Schlüssel zu Azure Key Vault hinzu, und die Erweiterung synchronisiert sie als Kubernetes-Schlüssel mit dem Edge.

Konfigurieren von Azure Key Vault-Berechtigungen

Um die Benutzeroberfläche für Vorgänge zum Erstellen von Geheimnissen im Schlüsseltresor zu nutzen, benötigen Benutzer Berechtigungen vom Typ Geheimnisbeauftragter für Schlüsseltresore auf Ressourcenebene in Azure.

Verwenden Sie in einer Test- oder Entwicklungsumgebung die folgenden Schritte, um Ihrem Benutzer die Rolle " Key Vault Secrets Officer " auf Ressourcengruppenebene zuzuweisen, in der die Azure IoT Operations-Instanz und die Azure Key Vault-Instanz bereitgestellt werden:

  1. Um den Namen der Ressourcengruppe zu finden, wechseln Sie zur Web-Ui für Vorgänge , wechseln Sie zur Seite " Instanzen ", und suchen Sie Ihre Azure IoT Operations-Instanz. Der Ressourcengruppenname wird im Ressourcengruppenfeld angezeigt.

  2. Wechseln Sie zum Azure-Portal , und wechseln Sie dann zu der Ressourcengruppe, in der Ihre Azure IoT Operations-Instanz und Azure Key Vault-Instanz bereitgestellt werden.

    Tipp

    Verwenden Sie das Suchfeld oben im Azure-Portal, um die Ressourcengruppe schnell zu finden, indem Sie den Namen eingeben.

  3. Wählen Sie im linken Menü die Zugriffssteuerung (IAM) aus. Wählen Sie dann +Hinzufügen > Rollenzuweisung hinzufügen aus.

  4. Wählen Sie auf der Registerkarte " Rolle " in der Liste der Rollen " Key Vault Secrets Officer " und dann "Weiter" aus.

  5. Wählen Sie auf der Registerkarte " Mitglieder " die Option "Benutzer", "Gruppe" oder "Dienstprinzipal" aus, wählen Sie " Mitglieder auswählen", wählen Sie den Benutzer aus, dem Sie die Rolle " Key Vault Secrets Officer " zuweisen möchten, und wählen Sie dann "Weiter" aus.

  6. Wählen Sie Überprüfen + Zuweisen, um die Rollenvergabe abzuschließen.

Befolgen Sie in einer Produktionsumgebung bewährte Methoden, um den Azure Key Vault zu schützen, den Sie mit Azure IoT Operations verwenden. Weitere Informationen finden Sie unter Bewährte Methoden für die Verwendung von Azure Key Vault.

Hinzufügen und Verwenden von Zertifikaten

Connectors verwenden die Zertifikatverwaltungsumgebung, um die Clientanwendungsauthentifizierung für externe Server zu konfigurieren. Weitere Informationen dazu, wie Connectors Zertifikate verwenden, um eine gegenseitige Vertrauensstellung mit externen Servern herzustellen, finden Sie in der Dokumentation zur connectorspezifischen Zertifikatverwaltung.

Wenn Sie Azure IoT Operations mit sicheren Einstellungen bereitstellen, können Sie mit dem Hinzufügen von Zertifikaten zu Azure Key Vault beginnen und sie mit dem Kubernetes-Cluster synchronisieren, der in den Listenspeichern für Vertrauensstellungslisten und Ausstellerlisten für externe Verbindungen verwendet werden soll.

Führen Sie die folgenden Schritte aus, um Zertifikate für die externe Kommunikation zu verwalten:

  1. Wechseln Sie zur Azure IoT Operations-Umgebung, und wählen Sie Ihre Website und Azure IoT Operations-Instanz aus.

  2. Wählen Sie im linken Navigationsbereich Geräte aus.

  3. Klicken Sie auf "Zertifikate und geheime Schlüssel verwalten".

    Screenshot der Option

  4. Klicken Sie auf der Seite "Zertifikate und Geheime Schlüssel" auf " Neues Zertifikat hinzufügen".

    Screenshot der Schaltfläche

  5. Sie können ein neues Zertifikat auf zwei Arten hinzufügen:

    • Zertifikat hochladen: Lädt ein Zertifikat hoch, das dann als geheimer Schlüssel zum Azure Key Vault hinzugefügt und automatisch mit dem Cluster über die Erweiterung des geheimen Speichers synchronisiert wird.

      • Zeigen Sie die Zertifikatdetails nach dem Hochladen an, um sicherzustellen, dass Sie über das richtige Zertifikat verfügen, bevor Sie Azure Key Vault hinzufügen und zum Cluster synchronisieren.
      • Verwenden Sie einen intuitiven Namen, damit Sie erkennen können, welches Geheimnis Ihr Geheimnis in Zukunft darstellt.
      • Wählen Sie den entsprechenden Zertifikatspeicher für den Connector aus, der das Zertifikat verwendet. Beispiel: OPC UA-Vertrauensliste.

      Screenshot der Option

      Hinweis

      Ein einfaches Hochladen des Zertifikats reicht nicht aus, um das Geheimnis zu Azure Key Vault hinzuzufügen und mit dem Cluster zu synchronisieren. Sie müssen Übernehmen auswählen, damit die Änderungen angewendet werden.

    • Aus Azure Key Vault hinzufügen: Fügen Sie einen vorhandenen geheimen Schlüssel aus dem Azure Key Vault hinzu, der mit dem Cluster synchronisiert werden soll.

      Screenshot der Option

      Hinweis

      Stellen Sie sicher, dass Sie den geheimen Schlüssel auswählen, der das Zertifikat enthält, das Sie mit dem Cluster synchronisieren möchten. Wenn Sie einen geheimen Schlüssel auswählen, der nicht das richtige Zertifikat ist, schlägt die Verbindung fehl.

  6. Mithilfe der Listenansicht können Sie die synchronisierten Zertifikate verwalten. Sie können alle synchronisierten Zertifikate anzeigen und mit welchem Zertifikatspeicher sie synchronisiert wird:

    Screenshot der Liste der Zertifikate auf der Seite

Weitere Informationen dazu, wie vertrauenswürdige Zertifikate für bestimmte Connectors verwaltet werden, finden Sie in der Dokumentation zur connectorspezifischen Zertifikatverwaltung.

Sie können auch synchronisierte Zertifikate löschen. Wenn Sie ein synchronisiertes Zertifikat löschen, löscht es nur das synchronisierte Zertifikat aus dem Kubernetes-Cluster und löscht nicht den enthaltenen geheimen Verweis aus Azure Key Vault. Sie müssen den geheimen Zertifikatschlüssel manuell aus dem Schlüsseltresor löschen.