gRPC sslcontext config
Saya baru mengenal gRPC. Apa yang saya coba lakukan adalah mengirim panggilan ssl gRPC dari klien ke server. Pertanyaan saya adalah 'certFile' dalam kode berikut adalah sertifikat klien atau sertifikat server? Jika sertifikat klien, apakah saya perlu menambahkan sertifikat server ke daftar kepercayaan saya atau apakah saya perlu menambahkan sertifikat klien ke daftar kepercayaan server sebelum saya melakukan panggilan? Hargai bantuan Anda.
SslContext sslcontext = GrpcSslContexts.forClient()
.trustManager(caFile)
.keyManager(certFile, keyFile)
.build();
Jawaban
trustManagerdan keyManagertimbal balik antar klien / server; manajer kepercayaan klien perlu mempercayai manajer kunci server dan manajer kepercayaan server perlu mempercayai manajer kunci klien (jika menggunakan sertifikat klien). Satu-satunya perbedaan antara klien dan server adalah server harus memiliki manajer kunci dan klien harus memiliki manajer kepercayaan. Jika Anda tidak menentukan pengelola kepercayaan untuk klien, default akan digunakan.
Manajer kepercayaan pada dasarnya adalah Otoritas Sertifikat yang dipercaya (terlepas dari klien atau server). Manajer kunci berisi sertifikat identitas dan kunci privat untuk membuktikan identitas itu.
Jadi keyManagerdi sisi klien adalah untuk sertifikat klien. Anda perlu mengonfigurasi trustManagerdi sisi server untuk mempercayai sertifikat itu: termasuk sertifikat itu sendiri atau, lebih baik, Otoritas Sertifikat yang menandatangani sertifikat klien. Biasanya Anda dapat membiarkan manajer kepercayaan klien sebagai default.
Perhatikan bahwa klien hanya akan mengirim sertifikatnya jika server memintanya. Jadi, Anda perlu mengkonfigurasi server ke OPTIONALly atau REQUIREsertifikat klien:
sslContextBuilder.clientAuth(ClientAuth.REQUIRE);