In diesem Dokument werden die Schritte zum Erstellen einer Root-Zertifizierungsstelle (Certificate Authority, CA) in Google Distributed Cloud (GDC) mit Air Gap beschrieben.
Eine Stammzertifizierungsstelle, die an der Spitze der Public-Key-Infrastruktur (PKI) steht, legt den Vertrauensanker für die PKI fest. Damit Zertifikate in einer PKI verwendet werden können, müssen Geräte, Software und Komponenten der Stammzertifizierungsstelle vertrauen. Diese Konfiguration sorgt für Vertrauen in alle von der Stammzertifizierungsstelle ausgestellten Zertifikate und damit in die PKI selbst.
Dieses Dokument richtet sich an Zielgruppen in der Gruppe der Anwendungsoperatoren, z. B. Anwendungsentwickler oder Data Scientists, die den Lebenszyklus von Zertifikaten in ihrem Projekt verwalten. Weitere Informationen finden Sie unter Zielgruppen für die GDC-Dokumentation mit Air Gap.
Hinweis
Bevor Sie eine Root-Zertifizierungsstelle erstellen können, müssen Sie die erforderlichen Berechtigungen anfordern und Ihre Umgebung vorbereiten.
IAM-Rollen anfordern
Wenn Sie eine Root-Zertifizierungsstelle erstellen, aktualisieren oder löschen möchten, wenden Sie sich an Ihren IAM-Administrator der Organisation und fordern Sie die Rolle Certificate Authority Service Admin (certificate-authority-service-admin) an.
Umgebung vorbereiten
Laden Sie die gdcloud CLI herunter und installieren Sie sie, falls noch nicht geschehen.
Generieren Sie eine kubeconfig-Datei um den
kubectlZugriff zu konfigurieren.
Root-Zertifizierungsstelle erstellen
Wenn Sie eine Stammzertifizierungsstelle erstellen möchten, wenden Sie eine benutzerdefinierte Ressource auf Ihre Distributed Cloud-Instanz mit Air Gap an.
Erstellen Sie eine
CertificateAuthority-Ressource und speichern Sie sie als YAML-Datei mit dem Namenroot-ca.yaml:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLEDErsetzen Sie die folgenden Variablen:
Variable Beschreibung ROOT_CA_NAME Der Name der Stammzertifizierungsstelle. USER_PROJECT_NAMESPACE Der Name des Namespace, in dem sich das Nutzerprojekt befindet. COMMON_NAME Der allgemeine Name des CA-Zertifikats. DURATION Die angeforderte Lebensdauer des CA-Zertifikats. Geben Sie die Dauer in Stunden an, z. B. 1000h. Einheiten wie Tage (d) oder Jahre (y) werden nicht unterstützt.SECRET_NAME Der Name des Kubernetes-Secrets, das den privaten Schlüssel und signiertes CA-Zertifikat enthält. Die folgenden Variablen sind optionale Werte:
Variable Beschreibung RENEW_BEFORE Die Rotationszeit vor Ablauf des CA-Zertifikats. ORGANIZATION Die Organisation, die im Zertifikat verwendet werden soll. ORGANIZATIONAL_UNITS Die Organisationseinheiten, die im Zertifikat verwendet werden sollen. COUNTRIES Die Länder, die im Zertifikat verwendet werden sollen. LOCALITIES Die Städte, die im Zertifikat verwendet werden sollen. PROVINCES Die Bundesländer oder Provinzen, die im Zertifikat verwendet werden sollen. STREET_ADDRESSES Die Adressen, die im Zertifikat verwendet werden sollen. POSTAL_CODES Die Postleitzahlen, die im Zertifikat verwendet werden sollen. EXTENDED_KEY_USAGE Die erweiterte Schlüsselverwendung für das Zertifikat. Wenn angegeben, sind die zulässigen Werte serverAuthundclientAuth.KEY_ALGORITHYM Der für dieses Zertifikat verwendete Algorithmus für den privaten Schlüssel. Zulässige Werte sind RSA,Ed25519, oderECDSA. Wenn die Größe nicht angegeben ist, wird standardmäßig 256 fürECDSAund 2048 fürRSAverwendet. Die Schlüsselgröße wird fürEd25519ignoriert.KEY_SIZE Die Größe des privaten Schlüssels für dieses Zertifikat in Bit hängt von dem Algorithmus ab. RSAsind 2048, 3072, 4096 oder 8192 zulässig (Standardwert: 2048). FürECDSAsind 256, 384 oder 521 zulässig (Standardwert: 256). FürEd25519wird die Größe ignoriert.ACME_ENABLED Wenn auf truegesetzt, wird die Zertifizierungsstelle im ACME-Modus ausgeführt und gibt die ACME-Server-URL aus. Sie können dann den ACME-Client und das ACME-Protokoll verwenden, um Zertifikate zu verwalten.Wenden Sie die benutzerdefinierte Ressource auf Ihre Distributed Cloud-Instanz an:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGErsetzen Sie
MANAGEMENT_API_SERVER_KUBECONFIGdurch den Pfad zur kubeconfig-Datei des Management API-Servers.Prüfen Sie, ob die Stammzertifizierungsstelle bereit ist. Normalerweise dauert es etwa 40 Minuten, bis die Zertifizierungsstelle bereit ist:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))Die Ausgabe sieht dann ungefähr so aus:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
Zertifizierungsstellen auflisten
So listen Sie alle Certificate Authority Service-Ressourcen in Ihrer Distributed Cloud-Instanz mit Air Gap auf:
Verwenden Sie den Parameter certificateauthorities, um alle CertificateAuthority-Ressourcen aufzulisten:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
Die Ausgabe sieht dann ungefähr so aus:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m