Configuring trusted certificates for mTLS
Untuk memvalidasi sertifikat klien dengan benar dan mengaktifkan metode otentikasi tertentu seperti TLS dua arah atau mTLS, Anda dapat mengatur toko kepercayaan dengan semua sertifikat (dan rantai sertifikat) yang harus dipercaya oleh server. Ada beberapa kemampuan yang bergantung pada toko kepercayaan ini untuk mengotentikasi klien yang menggunakan sertifikat dengan benar seperti Mutual TLS dan Otentikasi X.509.
Mengaktifkan mTLS
Otentikasi menggunakan mTLS dinonaktifkan secara default. Untuk mengaktifkan penanganan sertifikat mTLS saat NQRust-Identity adalah server dan perlu untuk memvalidasi sertifikat dari permintaan yang dibuat ke endpoint NQRust-Identity, letakkan sertifikat yang sesuai dalam truststore dan gunakan perintah berikut untuk mengaktifkan mTLS:
bin/kc.[sh|bat] start --https-client-auth=<none|request|required>Menggunakan nilai required menyiapkan NQRust-Identity untuk selalu meminta sertifikat dan gagal jika tidak ada sertifikat yang diberikan dalam permintaan. Dengan mengatur
nilai ke request, NQRust-Identity juga akan menerima permintaan tanpa sertifikat dan hanya memvalidasi kebenaran sertifikat jika ada.
Konfigurasi mTLS dan truststore dibagikan oleh semua Realm. Tidak mungkin untuk mengonfigurasi truststore yang berbeda untuk Realm yang berbeda.
Properti antarmuka manajemen diwarisi dari server HTTP utama, termasuk pengaturan mTLS.
Artinya saat mTLS diatur, itu juga diaktifkan untuk antarmuka manajemen.
Untuk menimpa perilaku, gunakan properti https-management-client-auth.
Menggunakan truststore terdedikasi untuk mTLS
Secara default, NQRust-Identity menggunakan System Truststore untuk memvalidasi sertifikat. Lihat Mengonfigurasi sertifikat terpercaya untuk detail.
Jika Anda perlu untuk menggunakan truststore terdedikasi untuk mTLS, Anda dapat mengonfigurasi lokasi dari truststore ini dengan menjalankan perintah berikut:
bin/kc.[sh|bat] start --https-trust-store-file=/path/to/file --https-trust-store-password=<value>Ekstensi file yang diakui untuk truststore:
.p12,.pkcs12, dan.pfxuntuk file pkcs12.jks, dan.truststoreuntuk file jks.ca,.crt, dan.pemuntuk file pem
Jika truststore Anda tidak memiliki ekstensi yang cocok dengan tipe filenya, Anda juga perlu untuk mengatur opsi https-key-store-type.
Sumber daya tambahan
Menggunakan mTLS untuk permintaan HTTP keluar
Perlu diperhatikan bahwa ini adalah konfigurasi sertifikat dasar untuk kasus penggunaan mTLS di mana NQRust-Identity bertindak sebagai server. Ketika NQRust-Identity bertindak sebagai klien sebagai contoh, misalnya saat NQRust-Identity mencoba untuk mendapatkan token dari endpoint token penyedia identitas yang dibroker oleh mTLS, Anda perlu untuk mengatur HttpClient untuk menyediakan sertifikat yang tepat dalam keystore untuk permintaan keluar. Untuk mengonfigurasi mTLS dalam skenario ini, lihat Mengonfigurasi permintaan HTTP keluar.
Mengonfigurasi Otentikasi X.509
Opsi relevan
| Opsi | Tipe atau Nilai | Default |
|---|---|---|
https-client-authMengonfigurasi server untuk meminta/mengharuskan otentikasi klien. CLI: --https-client-authEnv: KC_HTTPS_CLIENT_AUTH | none, request, required | none |
https-trust-store-fileTrust store yang menyimpan informasi sertifikat sertifikat yang dipercaya. CLI: --https-trust-store-fileEnv: KC_HTTPS_TRUST_STORE_FILE | File | |
https-trust-store-passwordKata sandi file trust store. CLI: --https-trust-store-passwordEnv: KC_HTTPS_TRUST_STORE_PASSWORD | String | |
https-trust-store-typeTipe file trust store. Jika tidak diberikan, tipe secara otomatis terdeteksi berdasarkan ekstensi file. Jika fips-mode diatur ke strict dan tidak ada nilai yang diatur, maka default ke BCFKS.CLI: --https-trust-store-typeEnv: KC_HTTPS_TRUST_STORE_TYPE | String | |
https-management-client-authMengonfigurasi antarmuka manajemen untuk meminta/mengharuskan otentikasi klien. Jika tidak diberikan, nilai diwarisi dari opsi HTTP. Hanya relevan saat ada yang diekspos di antarmuka manajemen - lihat panduan untuk detail. CLI: --https-management-client-authEnv: KC_HTTPS_MANAGEMENT_CLIENT_AUTH | none, request, required | none |