Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette page décrit la procédure à suivre pour créer une autorité de certification (CA) racine dans Google Distributed Cloud (GDC) air-gapped.
Une autorité de certification racine, qui se trouve au sommet de la hiérarchie de l'infrastructure à clé publique (PKI), établit l'ancrage de confiance pour la PKI. Pour utiliser des certificats dans une PKI, les appareils, logiciels et composants doivent faire confiance à l'autorité de certification racine. Cette configuration garantit la confiance dans tous les certificats émis par l'autorité de certification racine, ce qui permet de faire confiance à l'infrastructure PKI elle-même.
Avant de commencer
Pour obtenir les autorisations nécessaires pour créer une autorité de certification racine, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Administrateur du service d'autorité de certification (certificate-authority-service-admin). Pour en savoir plus sur les rôles, consultez Définitions des rôles.
Obtenir le fichier kubeconfig
Pour exécuter des commandes sur le serveur de l'API Management, assurez-vous de disposer des ressources suivantes :
Connectez-vous et générez le fichier kubeconfig pour le serveur d'API Management si vous n'en avez pas.
Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer MANAGEMENT_API_SERVER_KUBECONFIG dans ces instructions.
Créer une autorité de certification racine
Pour créer une autorité de certification racine, appliquez une ressource personnalisée à votre instance Distributed Cloud isolée.
Créez une ressource CertificateAuthority et enregistrez-la en tant que fichier YAML nommé root-ca.yaml :
Nom de l'espace de noms dans lequel réside le projet utilisateur.
COMMON_NAME
Nom commun du certificat de l'autorité de certification.
DURATION
Durée de vie demandée du certificat CA.
SECRET_NAME
Nom du secret Kubernetes contenant la clé privée et le certificat CA signé.
Les variables suivantes sont des valeurs facultatives :
Variable
Description
RENEW_BEFORE
Délai de rotation avant l'expiration du certificat CA.
ORGANIZATION
Organisation à utiliser sur le certificat.
ORGANIZATIONAL_UNITS
Unités organisationnelles à utiliser sur le certificat.
COUNTRIES
Pays à utiliser sur le certificat.
LOCALITIES
Villes à utiliser sur le certificat.
PROVINCES
États ou provinces à utiliser sur le certificat.
STREET_ADDRESSES
Adresses postales à utiliser sur le certificat.
POSTAL_CODES
Codes postaux à utiliser sur le certificat.
EXTENDED_KEY_USAGE
Utilisation étendue de la clé pour le certificat. Si elle est fournie, les valeurs autorisées sont serverAuth et clientAuth.
KEY_ALGORITHYM
Algorithme de clé privée utilisé pour ce certificat. Les valeurs autorisées sont RSA, Ed25519 ou ECDSA. Si la taille n'est pas indiquée, la valeur par défaut est 256 pour ECDSA et 2 048 pour RSA. La taille de la clé est ignorée pour Ed25519.
KEY_SIZE
La taille, en bits, de la clé privée de ce certificat dépend de l'algorithme. RSA autorise 2 048, 3 072, 4 096 ou 8 192 (2 048 par défaut). ECDSA autorise 256, 384 ou 521 (256 par défaut).
Ed25519 ignore la taille.
ACME_ENABLED
Si la valeur est définie sur true, l'autorité de certification s'exécute en mode ACME et génère l'URL du serveur ACME. Vous pouvez ensuite utiliser le client et le protocole ACME pour gérer les certificats.
Appliquez la ressource personnalisée à votre instance Distributed Cloud :
Remplacez MANAGEMENT_API_SERVER_KUBECONFIG par le chemin d'accès au fichier kubeconfig du serveur de l'API Management.
Vérifiez la disponibilité de l'autorité de certification racine. Il faut généralement environ 40 minutes pour que l'autorité de certification soit prête :
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[],[],null,["# Create a root certificate authority\n\nThis page describes the steps to create a root certificate authority (CA) in\nGoogle Distributed Cloud (GDC) air-gapped.\n\nA root CA, which sits atop the public key infrastructure (PKI) hierarchy,\nestablishes the trust anchor for the PKI. To use certificates within a PKI,\ndevices, software, and components must trust the root CA. This configuration\nensures trust in all certificates issued by the root CA, thereby enabling trust\nin the PKI itself.\n\nBefore you begin\n----------------\n\nTo get the permissions you need to create a root certificate authority, ask your\nOrganization IAM Admin to grant you the Certificate Authority Service Admin\n(`certificate-authority-service-admin`) role. For more information on roles, see\n[Role definitions](/distributed-cloud/hosted/docs/latest/gdch/application/ao-user/iam/role-definitions).\n\n### Get the kubeconfig file\n\nTo run commands against the Management API server, ensure you have the following\nresources:\n\n1. [Sign in and generate](/distributed-cloud/hosted/docs/latest/gdch/application/ao-user/iam/sign-in#cli) the\n kubeconfig file for the Management API server if you don't have one.\n\n2. Use the path to the kubeconfig file of the Management API server to replace\n \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER_KUBECONFIG\u003c/var\u003e in these\n instructions.\n\nCreate a root certificate authority\n-----------------------------------\n\nTo create a root CA, apply a custom resource to your Distributed Cloud\nair-gapped instance.\n\n1. Create a `CertificateAuthority` resource and save it as a YAML file called\n `root-ca.yaml`:\n\n apiVersion: pki.security.gdc.goog/v1\n kind: CertificateAuthority\n metadata:\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eROOT_CA_NAME\u003c/span\u003e\u003c/var\u003e\n namespace: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eUSER_PROJECT_NAMESPACE\u003c/span\u003e\u003c/var\u003e\n spec:\n caProfile:\n commonName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCOMMON_NAME\u003c/span\u003e\u003c/var\u003e\n duration: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eDURATION\u003c/span\u003e\u003c/var\u003e\n renewBefore: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eRENEW_BEFORE\u003c/span\u003e\u003c/var\u003e\n organizations:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eORGANIZATION\u003c/span\u003e\u003c/var\u003e\n organizationalUnits:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eORGANIZATIONAL_UNITS\u003c/span\u003e\u003c/var\u003e\n countries:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eCOUNTRIES\u003c/span\u003e\u003c/var\u003e\n localities:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eLOCALTIES\u003c/span\u003e\u003c/var\u003e\n provinces:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003ePROVINCES\u003c/span\u003e\u003c/var\u003e\n streetAddresses:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSTREET_ADDRESSES\u003c/span\u003e\u003c/var\u003e\n postalCodes:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003ePOSTAL_CODES\u003c/span\u003e\u003c/var\u003e\n caCertificate:\n selfSignedCA: {}\n certificateProfile:\n keyUsage:\n - digitalSignature\n - keyCertSign\n - crlSign\n extendedKeyUsage:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eEXTENDED_KEY_USAGE\u003c/span\u003e\u003c/var\u003e\n secretConfig:\n secretName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSECRET_NAME\u003c/span\u003e\u003c/var\u003e\n privateKeyConfig:\n algorithm: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eKEY_ALGORITHM\u003c/span\u003e\u003c/var\u003e\n size: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eKEY_SIZE\u003c/span\u003e\u003c/var\u003e\n acme:\n enabled: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eACME_ENABLED\u003c/span\u003e\u003c/var\u003e\n\n Replace the following variables:\n\n The following variables are optional values:\n\n \u003cbr /\u003e\n\n2. Apply the custom resource to your Distributed Cloud instance:\n\n kubectl apply -f root-ca.yaml --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER_KUBECONFIG\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER_KUBECONFIG\u003c/var\u003e with the\n path to the kubeconfig file of the Management API server.\n3. Verify the readiness of the root CA. It normally takes around 40 minutes for\n the CA to become ready:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER_KUBECONFIG\u003c/var\u003e -n \u003cvar translate=\"no\"\u003eUSER_PROJECT_NAMESPACE\u003c/var\u003e get certificateauthority.pki.security.gdc.goog/\u003cvar translate=\"no\"\u003eROOT_CA_NAME\u003c/var\u003e -ojson | jq -r ' \n .status.conditions[] | select( .type as $id | \"Ready\" | index($id))\n\n The output looks similar to the following: \n\n {\n \"lastTransitionTime\": \"2025-01-24T17:09:19Z\",\n \"message\": \"CA reconciled\",\n \"observedGeneration\": 2,\n \"reason\": \"Ready\",\n \"status\": \"True\",\n \"type\": \"Ready\"\n }\n\nList CAs\n--------\n\nTo list all of the Certificate Authority Service resources in your\nDistributed Cloud air-gapped instance, do the following:\n\nUse the `certificateauthorities` parameter to list all `CertificateAuthority`\nresources: \n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER_KUBECONFIG\u003c/var\u003e -n \u003cvar translate=\"no\"\u003eUSER_PROJECT_NAMESPACE\u003c/var\u003e get certificateauthorities\n\nThe output looks similar to the following: \n\n NAMESPACE NAME READY REASON AGE\n foo root-ca True Ready 7h24m\n foo sub-ca True Ready 7h24m"]]