问题排查
本页介绍了如何解决证书颁发机构服务的常见问题。
API 请求返回 HTTP 403 Forbidden
如果 API 请求返回 HTTP 403 Forbidden 并包含消息 Read access to project PROJECT_NAME was denied
,请使用以下解决方案。
解决方法
- 查看请求者的 IAM 权限。
- 检查请求的位置。不受支持的区域可能会返回权限遭拒的错误。如需详细了解受支持的位置,请参阅位置。
删除 CA 返回 HTTP 412 Failed Precondition
如果您在删除 CA 时看到以下失败的预条件错误,请使用本部分中的解决方法。
Cannot perform Certificate Authority deletion, Certificate Authority is in state ENABLED.
解决方法
CA 必须处于 DISABLED
或 STAGED
状态才能被删除。在安排删除 CA 之前,请确保其状态。如需详细了解 CA 状态,请参阅 CA 状态。
证书颁发失败
CA Service 提供了多项政策控制功能,可用于管理证书颁发。如需详细了解政策控件,请参阅证书模板和签发政策概览。
证书签发可能会因多种原因而失败。其中一些原因如下。
CA 池的证书颁发政策与证书模板之间存在冲突。
例如,假设颁发政策定义了一个扩展
foo
并为其分配值bar
,而证书模板定义了扩展foo
并为其分配了值bat
。为同一扩展程序分配两个不同的值会导致冲突。解决方法
根据证书模板查看 CA 池的证书颁发政策,并找出并解决冲突。
如需详细了解颁发政策,请参阅将证书颁发政策添加到 CA 池。
主题或主题备用名称 (SAN) 未通过证书模板或 CA 池的证书颁发政策中的 CEL 表达式评估。
解决方法
查看 CA 池的证书颁发政策和证书模板,并确保主题和 SAN 满足通用表达式语言 (CEL) 表达式设置的条件。如需详细了解 CEL 表达式,请参阅使用通用表达式语言。
为用例授予的 IAM 角色不正确。例如,为反映的身份分配
roles/privateca.certificateRequester
角色,或为默认身份模式分配roles/privateca.workloadCertificateRequester
角色。解决方法
确认您已为默认身份模式分配
roles/privateca.certificateRequester
角色,并为反映的身份分配roles/privateca.workloadCertificateRequester
角色。如需详细了解如何使用身份反射,请参阅联合工作负载的身份反射。尝试在不受支持的场景(例如没有 Hub 工作负载身份)中使用反射身份模式。身份反射不支持的场景会返回以下错误消息:
Could not use the REFLECTED_SPIFFE subject mode because the caller does not have a SPIFFE identity. Please visit the CA Service documentation to ensure that this is a supported use-case.
解决方法
确定您需要使用哪种类型的身份:默认身份或反映的身份。如果您需要使用反映的身份,请确保在某个受支持的场景中使用该身份。如需详细了解身份反射,请参阅联合工作负载的身份反射。
默认密钥大小限制会拒绝模数大小小于 2048 位的 RSA 密钥。
业界最佳实践建议使用至少 2048 位的 RSA 密钥。默认情况下,CA Service 会阻止使用 模数小于 2048 位的 RSA 密钥。
解决方法
如果您想使用模数大小小于 2048 位的 RSA 密钥,则必须使用证书颁发政策明确允许使用此类密钥。您可以使用以下 YAML 示例来允许使用此类 RSA 密钥:
allowedKeyTypes: - rsa: minModulusSize: 1024