Einrichten Ihres eigenen Zertifikatausstellers

In diesem Artikel wird gezeigt, wie Sie Ihren eigenen Zertifizierungsstelle-Aussteller für die interne Kommunikation in Azure IoT Einsatz bereitstellen, anstatt den standardmäßigen selbstsignierten Aussteller zu verwenden.

Festlegen Ihrer Umgebungsvariablen

Die Azure CLI Beispiele in diesem Artikel verwenden Umgebungsvariablen, sodass Sie jeden Wert einmal festlegen und dann die Befehle as-iskopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.

Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:

Umgebungsvariable Description
SUBSCRIPTION_ID Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält.
RESOURCE_GROUP Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält.
AIO_INSTANCE_NAME Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table.
CLUSTER_NAME Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet.
LOCATION Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.

Dieser Artikel verwendet außerdem die folgenden Umgebungsvariablen für die von Ihnen gewählten Werte: CONFIG_MAP_NAME, CA_CERTIFICATE_FILE, , CUSTOM_LOCATION_NAMESCHEMA_REGISTRY_RESOURCE_ID, CONFIG_MAP_KEY, , ISSUER_KINDund ISSUER_NAME. Stelle jede einzelne ein, bevor du die zugehörigen Befehle ausführst.

Standardmäßiges selbstsigniertes Aussteller- und Stammzertifizierungsstellenzertifikat

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, daher vertrauen ihm keine Clients außerhalb von Azure IoT Einsatz. Der Betreff des ZS-Zertifikats lautet CN=Azure IoT Einsatz Quickstart Root CA - Not for Production. Der Zertifikat-Manager dreht automatisch das Zertifizierungsstellenzertifikat.

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

  • Eine ConfigMap namens azure-iot-operations-aio-ca-trust-bundle im azure-iot-operations-Namespace speichert den öffentlichen Teil des Stamm-CA-Zertifikats. Sie können das Zertifizierungsstellenzertifikat aus der ConfigMap abrufen und mit kubectl und openssl überprüfen. Trust-manager hält die ConfigMap auf dem neuesten Stand, wenn cert-manager das CA-Zertifikat rotiert.

    kubectl get configmap azure-iot-operations-aio-ca-trust-bundle -n azure-iot-operations -o "jsonpath={.data['ca\.crt']}" | openssl x509 -text -noout
    
  • 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 CA-Zertifikat erstellt wurde, welches vom selbstsignierten Aussteller signiert ist, um TLS-Serverzertifikate für den Standard-TLS-Listener auf Port 18883 auszustellen.

Nutzen Sie Ihren eigenen Zertifikataussteller

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

Wenn Sie Azure IoT Einsatz 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 Einsatz-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 Einsatz-Namespace erstellt werden.

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

    1. Um ein Trust-Bundle einzurichten, erstellen Sie eine ConfigMap im Azure IoT Einsatz-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 $CONFIG_MAP_NAME --from-file=$CA_CERTIFICATE_FILE
      
  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 Einsatz bereitstellen. Beispiel:

      az iot ops create --subscription $SUBSCRIPTION_ID -g $RESOURCE_GROUP --cluster $CLUSTER_NAME --custom-location $CUSTOM_LOCATION_NAME -n $AIO_INSTANCE_NAME --sr-resource-id $SCHEMA_REGISTRY_RESOURCE_ID --trust-settings configMapName=$CONFIG_MAP_NAME configMapKey=$CONFIG_MAP_KEY issuerKind=$ISSUER_KIND issuerName=$ISSUER_NAME
      

Weitere Informationen zum Verwalten von Zertifikaten finden Sie unter Verwalten von Zertifikaten für Ihre Azure IoT Einsatz Bereitstellung.

Nächste Schritte