Zertifikatverwaltung für die interne Kommunikation von „Azure IoT Einsatz“
Die gesamte Kommunikation in „Azure IoT Einsatz“ wird mithilfe von 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 ZS-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 Namespacecert-manager
gespeichert.Der öffentliche Teil des ZS-Zertifikats wird in einer ConfigMap namens
azure-iot-operations-aio-ca-trust-bundle
unter dem Namespaceazure-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-aio-certificate-issuer
im Namespaceazure-iot-operations namespace
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 einzurichten, um Zertifikate zu verwalten und Ihren eigenen Zertifikataussteller mitzubringen, der mit Ihrer Unternehmens-PKI funktioniert, anstatt den standardmäßigen selbstsignierten Zertifikataussteller zum Ausgeben von TLS-Zertifikaten für die interne Kommunikation zu verwenden.
Um Azure IoT Operations mit Ihrem eigenen Zertifikataussteller einzurichten, führen Sie die folgenden Schritte aus, bevor Sie eine Instanz in Ihrem Cluster bereitstellen:
Führen Sie die Schritte unter Vorbereiten des Clusters aus, um das Cluster einzurichten.
Installieren Sie cert-manager. Der Cert-Manager verwaltet TLS-Zertifikate.
Installieren Sie trust-manager. Legen Sie beim Installieren des Trust-Managers
trust namespace
auf Cert-Manager fest. Zum 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.
Erstellen Sie den Azure IoT Operations-Namespace.
kubectl create namespace azure-iot-operations
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
oderIssuer
. Bei Verwendung vonIssuer
muss die Ausstellerressource im Azure IoT Operations-Namespace erstellt werden.Richten Sie das Trust-Bundle im Azure IoT Operations-Namespace ein.
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.
Rufen Sie den öffentlichen Schlüsselteil Ihres Zertifizierungsstellenzertifikats ab. Die Schritte zum Abrufen des öffentlichen Schlüssels hängen vom ausgewählten Zertifikataussteller ab.
Erstellen Sie die ConfigMap. Zum Beispiel:
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Führen Sie die Schritte in Bereitstellen von Azure IoT-Vorgängen für die Bereitstellung mit einigen Änderungen aus.
Fügen Sie den
--user-trust
-Parameter beim Vorbereiten des Clusters hinzu. Zum Beispiel:az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME> -g <RESOURCE_GROUP> --user-trust
Fügen Sie den
--trust-settings
-Parameter mit den erforderlichen Informationen hinzu, während Sie Azure IoT Operations bereitstellen. Zum 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>