Dela via


Intern kommunikation för certifikathantering för Azure IoT Operations

All kommunikation inom 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 under cert-manager namnområdet.

  • Den offentliga delen av rotcertifikatutfärdarcertifikatet lagras i en ConfigMap som anropas azure-iot-operations-aio-ca-trust-bundle under azure-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 Operations med en företags-PKI för att hantera certifikat och att du tar med din egen 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 använder du följande steg innan du distribuerar en instans till klustret:

  1. Följ stegen i Förbered klustret för att konfigurera klustret.

  2. Installera cert-manager. Cert-manager hanterar TLS-certifikat.

  3. 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.

  4. Skapa Azure IoT Operations-namnområdet.

    kubectl create namespace azure-iot-operations
    
  5. 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 eller Issuer. Om du använder Issuermåste utfärdarresursen skapas i Azure IoT Operations-namnområdet.

  6. Konfigurera förtroendepaket i Azure IoT Operations-namnområdet.

    1. 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.

    2. 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.

    3. Skapa ConfigMap. Till exempel:

      kubectl create configmap -n azure-iot-operations <YOUR_CONFIGMAP_NAME> --from-file=<CA_CERTIFICATE_FILENAME_PEM_OR_DER>
      
  7. Följ stegen i Distribuera Azure IoT-åtgärder att distribuera med några ändringar.

    1. 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
      
    2. 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>