问题排查

本页介绍了如何解决证书颁发机构服务的常见问题。

API 请求返回 HTTP 403 Forbidden

如果 API 请求返回 HTTP 403 Forbidden 并包含消息 Read access to project PROJECT_NAME was denied,请使用以下解决方案。

解决方法

  1. 查看请求者的 IAM 权限。
  2. 检查请求的位置。不受支持的区域可能会返回权限遭拒的错误。如需详细了解受支持的位置,请参阅位置

删除 CA 返回 HTTP 412 Failed Precondition

如果您在删除 CA 时看到以下失败的预条件错误,请使用本部分中的解决方法。

  • Cannot perform Certificate Authority deletion, Certificate Authority is in state ENABLED.

解决方法

CA 必须处于 DISABLEDSTAGED 状态才能被删除。在安排删除 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
    

后续步骤