Memformat sertifikat untuk GKE Identity Service

Dokumen ini menjelaskan cara memformat sertifikat saat mengonfigurasi GKE Identity Service. Panduan ini dapat membantu Anda menghindari dan memecahkan masalah terkait sertifikat penyedia identitas saat menggunakan layanan.

Ringkasan

GKE Identity Service adalah layanan autentikasi yang memungkinkan Anda login ke cluster Anthos melalui penyedia identitas seperti OIDC dan LDAP. Saat membuat koneksi TLS, GKE Identity Service akan memvalidasi sertifikat server penyedia, dan memverifikasi apakah issuer pada sertifikat penyedia adalah salah satu sertifikat certificate authority (CA) yang dikonfigurasi.

String certificateAuthorityData di ClientConfig

Sertifikat CA yang digunakan untuk memverifikasi identitas penyedia dikonfigurasi di kolom certificateAuthorityData pada ClientConfig, seperti yang ditunjukkan pada contoh berikut.

Contoh untuk LDAP

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

dengan CERTIFICATE_AUTHORITY_DATA berisi sertifikat CA berformat PEM dan berenkode base64 untuk server LDAP. Sertakan string yang dihasilkan di certificateAuthorityData sebagai satu baris. Alamat ini hanya boleh disediakan untuk koneksi ldaps dan startTLS.

Contoh untuk OIDC

...
oidc:
  certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
...

dengan CERTIFICATE_AUTHORITY_DATA berisi string sertifikat berformat PEM yang dienkode base64 untuk penyedia identitas. Sertakan string yang dihasilkan di certificateAuthorityData sebagai satu baris.

Nilai sertifikat berenkode base64

Ditentukan dalam RFC 4864, encoding base64 standar menggunakan karakter A ke Z, a ke z, 0 ke 9, +, dan /. Data diberi padding menggunakan =.

Mengenkode sertifikat CA untuk GKE Identity Service

Sertifikat SSL memiliki format seperti DER, PEM, dan PFX. File PFX biasanya dienkripsi dengan {i>password<i}.

Saat Anda mengonfigurasi GKE Identity Service dengan penyedia identitas, sertifikat tidak boleh dilindungi sandi. Hal ini terjadi karena tidak ada alur kerja yang tersedia untuk menentukan sandi untuk dekripsi. Karena alasan ini, pastikan Anda mengonversi sertifikat dari format lain menjadi file yang dienkode ke PEM menggunakan alat command line openssl di sistem Linux atau Unix apa pun. Jika ada beberapa sertifikat, gabungkan beberapa sertifikat dan impor sebagai satu file PEM.

Contoh format PEM

Berikut adalah contoh sertifikat yang dienkode ke 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-----

Perhatikan detail berikut dalam contoh:

  • Pembatas sertifikat dimulai dengan BEGIN CERTIFICATE dan diakhiri dengan END CERTIFICATE.
  • Jumlah tanda hubung yang digunakan dalam pemisah bersifat tetap.
  • Nilai sertifikat menggunakan encoding base64 (RFC 4864) standar dengan jeda baris (setelah 64 karakter).
  • Jeda baris (\n) tidak terlihat. Jangan meng-escape karakter baris baru.

Menentukan nilai sertifikat di ClientConfig

Untuk menentukan nilai sertifikat di ClientConfig, lakukan hal berikut:

  1. Tentukan format yang dienkode PEM untuk sertifikat CA.
  2. Base64 mengenkode file PEM sesuai dengan RFC 4864. Pastikan outputnya adalah string tunggal panjang tanpa jeda baris, seperti dalam contoh file PEM berenkode base64 berikut:
    LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNNekNDQVp5Z0F3SUJBZ0lKQUxpUG5Wc3ZxOGRzTUEwR0NTcUdTSWIzRFFFQkJRVUFNRk14Q3pBSkJnTlYKQkFZVEFsVlRNUXd3Q2dZRFZRUUlFd05tYjI4eEREQUtCZ05WQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dgpNUXd3Q2dZRFZRUUxFd05tYjI4eEREQUtCZ05WQkFNVEEyWnZiekFlRncweE16QXpNVGt4TlRRd01UbGFGdzB4Ck9EQXpNVGd4TlRRd01UbGFNRk14Q3pBSkJnTlZCQVlUQWxWVE1Rd3dDZ1lEVlFRSUV3Tm1iMjh4RERBS0JnTlYKQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dk1Rd3dDZ1lEVlFRTEV3Tm1iMjh4RERBS0JnTlZCQU1UQTJadgpiekNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBemRHZnhpOUNOYk1mMVVVY3ZEUWg3TVlCCk92ZUlIeWMwRTBLSWJoaks1RmtDQlU0Q2lacmJmSGFnYVc3WkVjTjB0dDNFdnBiT014eGMvWlFVMldOL3Mvd1AKeHBoMHBTZnNmRnNUS000UmhUV0QydjRmZ2sreFppS2QxcDArTDRoVHRwd25FdzB1WFJWZDBraTZtdXdWNXkvUAorNUZIVWVsZHErcGdUY2d6dUs4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnTGtNQTBHQ1NxR1NJYjNEUUVCCkJRVUFBNEdCQUppREFBdFkwbVFRZXV4V2R6TFJ6WG1qdmRTdUw5R295VDNCRi9qU25weHo1LzU4ZGJhOHBXZW4KdjNwajRQM3c1RG9Pc28wcnprWnkyakVzRWl0bFZNMm1MU2JRcE1NK01VVlFDUW9pRzZXOXh1Q0Z1eFNyd1BJUwpwQXFFQXVWNEROb3hRS0tXbWhWditKMHB0TVdEMjVQbnB4ZXE1c1h6Z2hmSm5zbEpsUU5ECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    
  3. Berikan nilai sertifikat ini untuk kolom certificateAuthorityData di ClientConfig.

Sertifikat CA untuk sertifikat perantara

Intermediate certificate memainkan peran "rantai kepercayaan" antara sertifikat entity akhir dan root certificate. Nilai sertifikat ini harus diformat sebagai string berenkode base64 saat digunakan di ClientConfig. Untuk membuat string tunggal, gabungkan sertifikat lengkap yang dienkode PEM menjadi satu string, lalu enkode base64 pada sertifikat tersebut.

Berikut adalah contoh rantai kepercayaan yang berdekatan yang dimulai dengan root certificate.

ServerCert -> IntermediateCA -> DeptCA -> RootCA

Dalam contoh ini, ServerCert diterbitkan oleh IntermediateCA, yang diterbitkan oleh DeptCA, yang kemudian diterbitkan oleh RootCA.

Rantai kepercayaan sebagian didukung oleh GKE Identity Service. Artinya, Anda dapat memberikan rantai hanya dengan beberapa sertifikat, seperti:

IntermediateCA -> DeptCA -> RootCA

IntermediateCA -> DeptCA

ServerCert

Jika GKE Identity Service hanya dikonfigurasi dengan rantai sebagian, layanan tersebut akan memverifikasi identitas server dengan mencoba mencocokkan sertifikat dalam rantai sebagian dengan identitas yang diberikan oleh server.

Versi GKE Identity Service sebelumnya, seperti versi sebelum GKE di VMware dan GKE pada Bare Metal 1.28.200, memerlukan rantai kepercayaan yang berdekatan yang dimulai dari root certificate untuk memverifikasi server. Contoh rantai parsial yang didukung oleh GKE Identity Service versi sebelumnya:

ServerCert -> IntermediateCA -> DeptCA -> RootCA

IntermediateCA -> DeptCA -> RootCA

DeptCA -> RootCA

Jika Anda mengalami masalah verifikasi sertifikat dan tidak mengetahui versi GKE Identity Service mana yang Anda gunakan, coba tambahkan root certificate ke rantai kepercayaan Anda jika Anda tidak memilikinya untuk mengetahui apakah ini adalah penyebab masalahnya.

Menentukan rantai kepercayaan sertifikat di ClientConfig

Untuk menentukan rantai kepercayaan sertifikat di ClientConfig, lakukan hal berikut:

  1. Tentukan format yang dienkode PEM untuk sertifikat CA yang ingin Anda sertakan dalam rantai sertifikat.
  2. Gabungkan file PEM menjadi satu file sehingga root certificate berada di akhir file. Outputnya akan terlihat seperti berikut:

    -----BEGIN CERTIFICATE-----
    IntermediateCA
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    DeptCA
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    RootCA certificate
    -----END CERTIFICATE-----
    
  3. Base64 mengenkode file gabungan. Pastikan file berisi satu baris teks berenkode base64.

  4. Berikan nilai sertifikat ini untuk kolom certificateAuthorityData di ClientConfig.