設定 GKE Identity Service 的憑證格式

本文說明設定 GKE Identity Service 時,如何格式化憑證。這份指南可協助您在使用服務時,避免及排解身分識別提供者憑證的問題。

總覽

GKE Identity Service 是一項驗證服務,可讓您透過 OIDC 和 LDAP 等識別資訊提供者登入 GKE 叢集。建立 TLS 連線時,GKE Identity Service 會驗證供應商的伺服器憑證,並確認供應商憑證的 issuer 是否為已設定的憑證授權單位 (CA) 憑證。

ClientConfig 中的 certificateAuthorityData 字串

用於驗證供應商身分的 CA 憑證,會在 ClientConfig 的 certificateAuthorityData 欄位中設定,如下列範例所示。

LDAP 範例

...
ldap:
  host: HOST_NAME
  certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
  connectionType: CONNECTION_TYPE
...

其中 CERTIFICATE_AUTHORITY_DATA 包含 LDAP 伺服器的 Base64 編碼 PEM 格式 CA 憑證。並把產生的字串另列一行加入 certificateAuthorityData。只有在 ldapsstartTLS 連線時,才需要提供這項資訊。

OIDC 範例

...
oidc:
  certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
...

其中 CERTIFICATE_AUTHORITY_DATA 包含身分識別提供者的 Base64 編碼 PEM 格式憑證字串。並把產生的字串另列一行加入 certificateAuthorityData

Base64 編碼的憑證值

標準 Base64 編碼 (定義於 RFC 4864) 使用的字元為 AZaz09+/。 資料會使用 = 填補。

為 GKE Identity Service 編碼 CA 憑證

SSL 憑證的格式包括 DER、PEM 和 PFX。PFX 檔案通常會以密碼加密。

使用身分識別提供者設定 GKE Identity Service 時,憑證不應受密碼保護。這是因為沒有可用的工作流程來指定解密密碼。因此,請務必在任何 Linux 或 Unix 系統上,使用 openssl 指令列工具將其他格式的憑證轉換為 PEM 編碼檔案。 如有數個憑證,請將這些憑證串連起來,然後匯入為單一 PEM 檔案。

PEM 格式範例

以下是 PEM 編碼憑證的範例:

-----BEGIN CERTIFICATE-----
MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
-----END CERTIFICATE-----

請注意範例中的下列詳細資料:

  • 憑證分隔符號的開頭為「BEGIN CERTIFICATE」,結尾為「END CERTIFICATE」。
  • 分隔符中使用的連字號數量固定。
  • 憑證值使用標準 Base64 (RFC 4864) 編碼,並在每 64 個字元後換行。
  • 換行符號 (\n) 不會顯示,請勿逸出換行字元。

在 ClientConfig 中指定憑證值

如要在 ClientConfig 中指定憑證值,請按照下列步驟操作:

  1. 判斷 CA 憑證的 PEM 編碼格式
  2. 根據 RFC 4864,以 Base64 編碼 PEM 檔案。 請確認輸出內容為不含任何換行的單一長字串,如下方 base64 編碼 PEM 檔案的範例所示:
    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNNekNDQVp5Z0F3SUJBZ0lKQUxpUG5Wc3ZxOGRzTUEwR0NTcUdTSWIzRFFFQkJRVUFNRk14Q3pBSkJnTlYKQkFZVEFsVlRNUXd3Q2dZRFZRUUlFd05tYjI4eEREQUtCZ05WQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dgpNUXd3Q2dZRFZRUUxFd05tYjI4eEREQUtCZ05WQkFNVEEyWnZiekFlRncweE16QXpNVGt4TlRRd01UbGFGdzB4Ck9EQXpNVGd4TlRRd01UbGFNRk14Q3pBSkJnTlZCQVlUQWxWVE1Rd3dDZ1lEVlFRSUV3Tm1iMjh4RERBS0JnTlYKQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dk1Rd3dDZ1lEVlFRTEV3Tm1iMjh4RERBS0JnTlZCQU1UQTJadgpiekNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBemRHZnhpOUNOYk1mMVVVY3ZEUWg3TVlCCk92ZUlIeWMwRTBLSWJoaks1RmtDQlU0Q2lacmJmSGFnYVc3WkVjTjB0dDNFdnBiT014eGMvWlFVMldOL3Mvd1AKeHBoMHBTZnNmRnNUS000UmhUV0QydjRmZ2sreFppS2QxcDArTDRoVHRwd25FdzB1WFJWZDBraTZtdXdWNXkvUAorNUZIVWVsZHErcGdUY2d6dUs4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnTGtNQTBHQ1NxR1NJYjNEUUVCCkJRVUFBNEdCQUppREFBdFkwbVFRZXV4V2R6TFJ6WG1qdmRTdUw5R295VDNCRi9qU25weHo1LzU4ZGJhOHBXZW4KdjNwajRQM3c1RG9Pc28wcnprWnkyakVzRWl0bFZNMm1MU2JRcE1NK01VVlFDUW9pRzZXOXh1Q0Z1eFNyd1BJUwpwQXFFQXVWNEROb3hRS0tXbWhWditKMHB0TVdEMjVQbnB4ZXE1c1h6Z2hmSm5zbEpsUU5ECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
  3. 在 ClientConfig 的 certificateAuthorityData 欄位中提供這個憑證值。

中繼憑證的 CA 憑證

中繼憑證在終端實體憑證和根憑證之間扮演「信任鏈結」的角色。在 ClientConfig 中使用時,這個憑證值應採用 Base64 編碼字串格式。 如要建立單一字串,請將完整的 PEM 編碼憑證串連成單一字串,然後進行 Base64 編碼。

以下是從根憑證開始的連續信任鏈結範例。

ServerCert -> IntermediateCA -> DeptCA -> RootCA

在本範例中,ServerCertIntermediateCA 核發,IntermediateCADeptCA 核發,而 DeptCA 則由 RootCA 核發。

GKE Identity 服務支援部分信任鏈。也就是說,您只需提供部分憑證的鏈結,例如:

IntermediateCA -> DeptCA -> RootCA

IntermediateCA -> DeptCA

ServerCert

如果 GKE Identity Service 只設定了部分鏈結,系統會嘗試將部分鏈結中的憑證與伺服器提供的身分識別資訊進行比對,藉此驗證伺服器身分。

在 Google Distributed Cloud 1.28.200 之前的版本中,GKE Identity Service 舊版需要從根憑證開始的連續信任鏈,才能驗證伺服器。以下是舊版 GKE Identity Service 支援的部分鏈結範例:

ServerCert -> IntermediateCA -> DeptCA -> RootCA

IntermediateCA -> DeptCA -> RootCA

DeptCA -> RootCA

如果遇到憑證驗證問題,但不知道使用的 GKE Identity Service 版本,請嘗試在信任鏈中新增根憑證 (如果沒有),看看是否為問題原因。

在 ClientConfig 中指定憑證信任鏈結

如要在 ClientConfig 中指定憑證信任鏈結,請執行下列操作:

  1. 找出要納入憑證鏈結的 CA 憑證的 PEM 編碼格式
  2. 將 PEM 檔案串連為單一檔案,根憑證位於檔案結尾。輸出內容如下所示:

    -----BEGIN CERTIFICATE-----
    IntermediateCA
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    DeptCA
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    RootCA certificate
    -----END CERTIFICATE-----
  3. 以 Base64 編碼串連的檔案。確認檔案包含一行 base64 編碼文字。

  4. 在 ClientConfig 的 certificateAuthorityData 欄位中提供這個憑證值。