本页面介绍了在 Google Distributed Cloud (GDC) 气隙环境中创建根证书授权机构 (CA) 的步骤。
根 CA 位于公钥基础架构 (PKI) 层次结构的顶部,用于为 PKI 建立信任锚点。如需在 PKI 中使用证书,设备、软件和组件必须信任根 CA。此配置可确保信任根 CA 颁发的所有证书,从而实现对 PKI 本身的信任。
准备工作
如需获得创建根证书授权机构所需的权限,请让组织 IAM 管理员向您授予 Certificate Authority Service Admin (certificate-authority-service-admin
) 角色。如需详细了解角色,请参阅角色定义。
获取 kubeconfig 文件
如需针对管理 API 服务器运行命令,请确保您拥有以下资源:
登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。
使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的
MANAGEMENT_API_SERVER_KUBECONFIG
。
创建根证书授权机构
如需创建根 CA,请将自定义资源应用于 Distributed Cloud 空气隔离实例。
创建
CertificateAuthority
资源并将其保存为名为root-ca.yaml
的 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_ENABLED
执行以下变量替换操作:
变量 说明 ROOT_CA_NAME 根 CA 的名称。 USER_PROJECT_NAMESPACE 用户项目所在的命名空间的名称。 COMMON_NAME CA 证书的通用名称。 DURATION CA 证书的请求有效期。 SECRET_NAME 包含私钥和已签名的 CA 证书的 Kubernetes Secret 的名称。 以下变量是可选值:
变量 说明 RENEW_BEFORE 在 CA 证书过期之前进行轮替的时间。 ORGANIZATION 证书上要使用的组织。 ORGANIZATIONAL_UNITS 证书上要使用的组织部门。 COUNTRIES 证书上要使用的国家/地区。 LOCALITIES 证书上要使用的城市。 PROVINCES 证书上要使用的州或省/直辖市/自治区。 STREET_ADDRESSES 证书上要使用的街道地址。 POSTAL_CODES 证书上要使用的邮政编码。 EXTENDED_KEY_USAGE 证书的扩展密钥用途。如果提供,允许的值为 serverAuth
和clientAuth
。KEY_ALGORITHYM 相应证书所用的私钥算法。允许的值为 RSA
、Ed25519
或ECDSA
。如果未提供大小,则对于ECDSA
,大小默认为 256;对于RSA
,大小默认为 2048。对于Ed25519
,密钥大小会被忽略。KEY_SIZE 相应证书的私钥大小(以位为单位)取决于算法。 RSA
允许 2048、3072、4096 或 8192(默认 2048)。ECDSA
允许 256、384 或 521(默认值为 256)。Ed25519
会忽略大小。ACME_ENABLED 如果设置为 true
,CA 将在 ACME 模式下运行,并输出 ACME 服务器网址。然后,您可以使用 ACME 客户端和协议来管理证书。将自定义资源应用于 Distributed Cloud 实例:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
将
MANAGEMENT_API_SERVER_KUBECONFIG
替换为管理 API 服务器的 kubeconfig 文件的路径。验证根 CA 是否已准备就绪。CA 通常需要大约 40 分钟才能准备就绪:
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))
输出类似于以下内容:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
列出 CA
如需列出 Distributed Cloud 空气隔离实例中的所有 Certificate Authority Service 资源,请执行以下操作:
使用 certificateauthorities
参数列出所有 CertificateAuthority
资源:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
输出类似于以下内容:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m