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 decert-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 deazure-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
aangeroepenazure-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:
Volg de stappen in Het cluster voorbereiden om uw cluster in te stellen.
Installeer cert-manager. Certificaatbeheer beheert TLS-certificaten.
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.
Maak de Azure IoT Operations-naamruimte.
kubectl create namespace azure-iot-operations
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 ofIssuer
. Als uIssuer
deze gebruikt, moet de verlenerresource worden gemaakt in de Azure IoT Operations-naamruimte.Stel de vertrouwensbundel in de Azure IoT Operations-naamruimte in.
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.
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.
Maak de ConfigMap. Voorbeeld:
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Volg de stappen in Azure IoT-bewerkingen implementeren om te implementeren, met enkele wijzigingen.
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
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>