Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure IoT Operations använder TLS för att kryptera kommunikationen mellan alla komponenter. Den här artikeln beskriver hur du hanterar certifikat för intern och extern kommunikation och hur du tar med din egen certifikatutfärdare (CA) för intern kommunikation i en produktionsdistribution.
Förutsättningar
- För att hantera certifikat för extern kommunikation behöver du en Azure IoT Operations-instans som distribueras med säkra inställningar. Om du har distribuerat Azure IoT Operations med testinställningar måste du först aktivera säkra inställningar.
Hantera certifikat för intern kommunikation
All kommunikation i Azure IoT Operations krypteras med hjälp av TLS. För att hjälpa dig att komma igång distribueras Azure IoT Operations med en standardrotcertifikatutfärdare och utfärdare för TLS-servercertifikat. Du kan använda standardinställningen för utveckling och testning. För en produktionsdistribution rekommenderar vi att du använder en egen CA-utfärdare och en PKI-lösning för företag.
Standard självsignerad utfärdare och rotcertifikatutfärdarcertifikat för TLS-servercertifikat
För att hjälpa dig att komma igång distribueras Azure IoT Operations med en självsignerad standardutfärdare och rotcertifikatutfärdarcertifikat för TLS-servercertifikat. Du kan använda den här utfärdaren för utveckling och testning. Azure IoT Operations använder cert-manager för att hantera TLS-certifikat och trust-manager för att distribuera förtroendepaket till komponenter.
CA-certifikatet är självsignerat och inte betrott av några klienter utanför Azure IoT Operations. Certifikatutfärdarcertifikatets ämne är
CN=Azure IoT Operations Quickstart Root CA - Not for Production
. CA-certifikatet roteras automatiskt av cert-manager.Rotcertifikatutfärdarcertifikatet lagras i en Kubernetes-hemlighet som anropas
azure-iot-operations-aio-ca-certificate
undercert-manager
namnområdet.Den offentliga delen av rotcertifikatutfärdarcertifikatet lagras i en ConfigMap som anropas
azure-iot-operations-aio-ca-trust-bundle
underazure-iot-operations
namnområdet. Du kan hämta CA-certifikatet från ConfigMap och inspektera det med kubectl och openssl. ConfigMap hålls uppdaterad av trust-manager när CA-certifikatet roteras av cert-manager.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]
Som standard finns det redan en utfärdare som har konfigurerats i namnet
azure-iot-operations namespace
azure-iot-operations-aio-certificate-issuer
. Den används som vanlig utfärdare för alla TLS-servercertifikat för IoT-åtgärder. MQTT Broker använder en utfärdare som skapats från samma CA-certifikat som är signerat av den självsignerade utfärdaren för att utfärda TLS-servercertifikat för TLS-standardlyssnaren på port 18883. Du kan inspektera utfärdaren med följande kommando: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
Ta med din egen utfärdare
För produktionsdistributioner rekommenderar vi att du konfigurerar Azure IoT-åtgärder med en företags-PKI för att hantera certifikat och att du tar med din egen CA-utfärdare som fungerar med företagets PKI i stället för att använda den självsignerade standardutfärdaren för att utfärda TLS-certifikat för intern kommunikation.
Om du vill konfigurera Azure IoT Operations med din egen utfärdare för intern kommunikation använder du följande steg innan du distribuerar en instans till klustret:
Följ stegen i Förbered klustret för att konfigurera klustret.
Installera cert-manager. Cert-manager hanterar TLS-certifikat.
Installera trust-manager. När du installerar förtroendehanteraren anger du
trust namespace
till cert-manager. Till exempel:helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --set app.trust.namespace=cert-manager --wait
Trust-manager används för att distribuera ett förtroendepaket till komponenter.
Skapa Azure IoT Operations-namnområdet.
kubectl create namespace azure-iot-operations
Distribuera en utfärdare som fungerar med cert-manager. En lista över alla utfärdare som stöds finns i utfärdare av certifikathanterare.
Utfärdaren kan vara av typen
ClusterIssuer
ellerIssuer
. Om du använderIssuer
måste utfärdarresursen skapas i Azure IoT Operations-namnområdet.Konfigurera förtroendepaket i Azure IoT Operations-namnområdet.
Om du vill konfigurera förtroendepaket skapar du en ConfigMap i Azure IoT Operations-namnområdet. Placera den offentliga nyckeldelen av certifikatutfärdarcertifikatet i konfigurationskartan med ett valfritt nyckelnamn.
Hämta den offentliga nyckeldelen av certifikatutfärdarcertifikatet. Stegen för att hämta den offentliga nyckeln beror på vilken utfärdare du väljer.
Skapa ConfigMap. Till exempel:
kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
Följ stegen i Distribuera Azure IoT-åtgärder att distribuera med några ändringar.
Lägg till parametern
--user-trust
när du förbereder klustret. Till exempel:az iot ops init --subscription <SUBSCRIPTION_ID> --cluster <CLUSTER_NAME> -g <RESOURCE_GROUP> --user-trust
Lägg till parametern
--trust-settings
med nödvändig information när du distribuerar Azure IoT Operations. Till exempel:
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>
Hantera certifikat för extern kommunikation
Certifikathanteringsmiljön för extern kommunikation använder Azure Key Vault som lösning för hanterat valv i molnet. Certifikat läggs till i nyckelvalvet som hemligheter och synkroniseras till gränsen som Kubernetes-hemligheter via Azure Key Vault Secret Store-tillägget.
Anslutningsappen för OPC UA använder till exempel certifikathanteringsmiljön för att konfigurera OPC UA-klientprogramautentisering till en extern OPC UA-server. Azure IoT Operations hanterar två distinkta certifikatarkiv för anslutningsappen för OPC UA: ett för listan Förtroende och ett för listan Utfärdare. Mer information om hur anslutningsappen för OPC UA använder certifikat för att upprätta ömsesidigt förtroende med en OPC UA-server finns i OPC UA-certifikatinfrastrukturen för anslutningsappen för OPC UA.
När du distribuerar Azure IoT Operations med säkra inställningar kan du börja med att lägga till certifikat i Azure Key Vault och synkronisera dem till Kubernetes-klustret som ska användas i Listan över betrodda och Utfärdarlistan för OPC UA-anslutningar:
Ladda upp certifikat: Laddar upp ett certifikat som sedan läggs till som en hemlighet i Azure Key Vault och synkroniseras automatiskt till klustret med hjälp av Secret Store-tillägget.
Tips/Råd
- Visa certifikatinformationen när du har laddat upp för att se till att du har rätt certifikat innan du lägger till i Azure Key Vault och synkroniserar till klustret.
- Använd ett intuitivt namn så att du kan känna igen vilken hemlighet som representerar din hemlighet i framtiden.
Anmärkning
Om du bara laddar upp certifikatet läggs inte hemligheten till i Azure Key Vault och synkroniseras till klustret. Du måste välja Tillämpa för att ändringarna ska tillämpas.
Lägg till från Azure Key Vault: Lägg till en befintlig hemlighet från Azure Key Vault som ska synkroniseras till klustret.
Anmärkning
Välj den hemlighet som innehåller det certifikat som du vill synkronisera med klustret. Om du väljer en hemlighet som inte är rätt certifikat misslyckas anslutningen.
Med listvyn kan du hantera de synkroniserade certifikaten. Du kan visa alla synkroniserade certifikat och vilket certifikatarkiv det synkroniseras med:
- För att lära dig mer om Förtroendelista och Utfärdarlista lagringsplatser, se Konfigurera OPC UA-certifikatinfrastruktur för anslutningstjänsten för OPC UA.
Du kan också ta bort synkroniserade certifikat. När du tar bort ett synkroniserat certifikat tar det bara bort det synkroniserade certifikatet från Kubernetes-klustret och tar inte bort den inneslutna hemliga referensen från Azure Key Vault. Du måste ta bort certifikathemligheten manuellt från nyckelvalvet.