Freigeben über


Eigene CA-Zertifizierungsstelle in Azure Kubernetes Service (AKS)

Mit einer benutzerdefinierten Zertifizierungsstelle können Sie bis zu 10 base64-codierte Zertifikate zum Vertrauensspeicher Ihres Knotens hinzufügen. Dieses Feature ist häufig erforderlich, wenn CAs auf dem Knoten vorhanden sein müssen, z. B. beim Herstellen einer Verbindung mit einer privaten Registrierung.

In diesem Artikel erfahren Sie, wie Sie benutzerdefinierte Zertifizierungsstellen erstellen und auf Ihre AKS-Cluster anwenden.

Note

Das Feature "Benutzerdefinierte Zertifizierungsstellen" fügt Ihre benutzerdefinierten Zertifikate dem Vertrauensspeicher des AKS-Knotens hinzu. Zertifikate, die mit diesem Feature hinzugefügt wurden, sind für Container, die in Pods ausgeführt werden, nicht verfügbar. Wenn die Zertifikate auch innerhalb von Containern benötigt werden, müssen Sie sie trotzdem separat hinzufügen, indem Sie sie entweder dem von Ihren Pods verwendeten Image oder zur Laufzeit über Skripting und einen geheimen Schlüssel hinzufügen.

Prerequisites

  • Ein Azure-Abonnement. If you don't have an Azure subscription, create a free account.
  • Sie benötigen die Azure CLI-Version 2.72.0 oder höher installiert und konfiguriert. Führen Sie az --version aus, um Ihre CLI-Version zu finden. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
  • Eine Base64-codierte Zertifikatzeichenfolge oder Textdatei mit Zertifikat.

Limitations

  • Windows-Knotenpools werden nicht unterstützt.
  • Das Installieren verschiedener CAs im selben Cluster wird nicht unterstützt.

Installieren Sie CAs im Vertrauensspeicher Ihres Knotens.

  1. Erstellen Sie eine Datei, die CAs enthält.

    Erstellen Sie eine Textdatei mit bis zu 10 getrennten Leerzeilenzertifikaten. Wenn diese Datei an Ihren Cluster übergeben wird, werden diese Zertifikate in den Vertrauensspeichern Ihres Knotens installiert.

    Beispieltextdatei:

        -----BEGIN CERTIFICATE-----
        cert1
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        cert2
        -----END CERTIFICATE-----
    

    Bevor Sie mit dem nächsten Schritt fortfahren, stellen Sie sicher, dass in ihrer Textdatei keine Leerzeichen vorhanden sind. Diese Leerzeichen führen im nächsten Schritt zu einem Fehler, wenn sie nicht entfernt werden.

  2. Verwenden Sie az aks create oder az aks update, um Zertifikate an Ihren Cluster zu übergeben. Nach Abschluss des Vorgangs werden die Zertifikate in den Vertrauensspeichern Ihres Knotens installiert.

    • Installieren Sie CAs während der Clustererstellung mithilfe des az aks create Befehls, und geben Sie die Textdatei für den --custom-ca-trust-certificates Parameter an.

      az aks create \
          --resource-group <resource-group-name> \
          --name <cluster-name> \
          --node-count 2 \
          --custom-ca-trust-certificates FileWithCAs \
          --generate-ssh-keys
      
    • Installieren Sie CAs während der Clusteraktualisierung mithilfe des az aks update Befehls, und geben Sie die Textdatei für den --custom-ca-trust-certificates Parameter an.

      az aks update \
          --resource-group <resource-group-name> \
          --name <cluster-name> \
          --custom-ca-trust-certificates <path-to-ca-file>
      

    Note

    Dieser Vorgang löst ein Modellupdate aus, um sicherzustellen, dass alle vorhandenen Knoten dieselben CAs installiert haben, um die korrekte Bereitstellung zu gewährleisten. AKS erstellt neue Knoten, entwässert vorhandene Knoten, löscht vorhandene Knoten und ersetzt sie durch Knoten, die den neuen Satz von CAs installiert haben.

  3. Überprüfen Sie, ob CAs installiert sind.

Verwenden Sie den az aks show Befehl, um zu überprüfen, ob CAs installiert sind.

az aks show -g <resource-group-name> -n <cluster-name> | grep securityProfile -A 4

Die securityProfile-Ausgabe sollte Ihre benutzerdefinierten Vertrauenszertifikate von Zertifizierungsstellen enthalten.

  "securityProfile": {
    "azureKeyVaultKms": null,
    "customCaTrustCertificates": [
        "values"

Troubleshooting

Formatting error

Das Hinzufügen von Zertifikaten zu einem Cluster kann zu einem Fehler führen, wenn die Datei mit den Zertifikaten nicht ordnungsgemäß formatiert ist.

failed to decode one of SecurityProfile.CustomCATrustCertificates to PEM after base64 decoding

Wenn dieser Fehler auftritt, sollten Sie überprüfen, ob ihre Eingabedatei keine zusätzlichen neuen Zeilen, Leerzeichen oder Daten enthält, die nicht ordnungsgemäß formatierte Zertifikate sind, wie in der Beispieldatei dargestellt.

Das Feature ist aktiviert, und das Geheimnis mit Zertifizierungsstellen wurde hinzugefügt, aber die Vorgänge schlagen mit dem Fehler „X.509 Certificate Signed by Unknown Authority“ (Zertifikat wurde von unbekannter Autorität signiert) fehl

Falsch formatierte Zertifikate im Geheimnis übergeben

AKS verlangt, dass die im vom Benutzer erstellten Geheimnis übergebenen Zertifikate ordnungsgemäß formatiert und mit Base64 codiert sind. Stellen Sie sicher, dass die übergebenen Zertifizierungsstellen ordnungsgemäß mit Base64 codiert sind und dass Dateien mit Zertifizierungsstellen keine CRLF-Zeilenumbrüche aufweisen.

Zertifikate, die an --custom-ca-trust-certificates übergeben werden, dürfen nicht mit Base64 codiert sein.

Containerd nimmt keine neuen Zertifikate an.

Führen Sie in der Shell des Knotens systemctl restart containerd aus. Sobald containerd neu startet, übernimmt die Container-Laufzeitumgebung die neuen Zertifikate.

Next steps

Weitere Informationen zu bewährte Methoden der AKS-Sicherheit finden Sie unter Bewährte Methoden für Cluster-Sicherheit und Upgrades in Azure Kubernetes Service (AKS).