排查 OIDC 提供方问题

本文档提供有关排查 GKE Identity Service 中的 OIDC 和 AzureAD 身份提供方问题的指导。

证书格式不正确

当证书值有格式错误时,就会出现此问题。格式问题可能对应于非 base64 编码的证书值和以 base64 编码但不正确的值。如果证书并非由根证书授权机构签名,或者未提供格式正确的信任链,则可能会出现此问题。

错误消息

以下是证书格式不正确时的错误消息示例:

  • 非 base64 编码的证书: Failed creating HTTP client to fetch the Discovery URI "<Discovery-document URI>" with error: Unable to decode data field, the value should be Base64 encoded

  • 证书格式不正确或采用 base64 编码但值不正确: Unable to connect to 'https://example.com', encountered the following error: Problem with the SSL CA cert (path? access rights?). Details: error setting certificate verify locations: CAfile: /tmp/example.pem CApath: none (The certificate could not be read, this is most likely because it's empty or contains a formatting error. Please check your configuration.)

  • 证书格式不正确或采用 base64 编码但值不正确: Failed fetching the Discovery URI "<Discovery-document URI>" with error: Unable to load TLS certificates.

解决方案

您可以通过以下方式之一解决这些问题:

  • 您在 ClientConfig 中提供的证书值应该是 base64 编码的字符串和 PEM 格式的字符串。如需了解详情,请参阅对 CA 证书进行编码
  • 如果您的提供方未使用由根证书授权机构签名的证书,则您需要使用证书信任链配置 GKE Identity Service。如需了解详情,请参阅中间证书

证书值错误

当证书的值不匹配时,会出现此问题。在这种情况下,证书的格式正确,但它们与服务器不匹配。此问题也可能表示配置中没有证书。

在以下情况下,证书值可能会被视为不正确:

  • ClientConfig 中共享了不正确的证书值。如果服务器证书的 issuer 与已配置证书的 subject 不匹配,则证书值不正确。
  • ClientConfig 中的证书不是 base64 编码的字符串。
  • 使用中间证书颁发服务器证书时,未提供证书链。

错误消息

以下是证书值不匹配时的错误消息示例:

  • 证书链不完整或与服务器不匹配: SSL peer certificate was not OK. Details: SSL certificate problem: unable to get local issuer certificate

  • 证书链不完整(对应于不是从根开始或不连续的无效部分链): Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

  • 证书链有效,但与 OIDC 服务器不匹配: AIS was expecting the server to have a different certificate

  • 证书链有效,但与 OIDC 服务器不匹配: Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

解决方案

您在 ClientConfig 中提供的证书值需要包含与身份提供方匹配的格式正确的证书链。如需详细了解如何设置证书格式和编码,请参阅对 CA 证书进行编码