Kami menggunakan sertifikat sisi klien untuk mengautentikasi salah satu pelanggan kami.
Pengaturan kami adalah ini: Kami memiliki nginx di depan aplikasi Django. Dalam konfigurasi nginx kami, kami memiliki parameter yang diperlukan untuk mendapatkan verifikasi sisi-klien yang sebenarnya untuk bekerja ( ssl_client_certificate
, ssl_verify_client
dll) dan
uwsgi_param X-Client-Verify $ssl_client_verify;
uwsgi_param X-Client-DN $ssl_client_s_dn;
uwsgi_param X-SSL-Issuer $ssl_client_i_dn;
yang berarti bahwa kita mendapatkan nilai variabel-variabel itu ke dalam aplikasi Django kita. Aplikasi Django kemudian menggunakan informasi ini untuk mengidentifikasi pengguna mana yang terhubung dan mengotorisasi mereka.
Kami telah berhasil menggunakan ini selama beberapa bulan tanpa masalah ketika tiba-tiba kami mulai mendapatkan laporan tentang orang-orang yang tidak dapat masuk menggunakan sertifikat. Ternyata format $ssl_client_s_dn
dan $ssl_client_i_dn
nilai telah berubah, dari format yang dipisahkan dengan slash:
/C=SE/O=Some organziation/CN=Some CA
ke format yang dipisahkan koma:
CN=Some CA,O=Some organization,C=SE
Memecahkan ini mudah, tetapi saya tidak mengerti mengapa. Jadi pertanyaan saya benar-benar:
- Dari mana nilai
$ssl_client_s_dn
datang? Apakah ini diatur oleh nginx? Klien? - Apakah ada dokumentasi / spesifikasi format yang nilai ini dapat miliki dan apakah ada nama?