Saya ingin memaksa verifikasi klien ssl untuk pada host virtual saya. Tetapi dapatkan kesalahan "Tidak diperlukan sertifikat SSL yang dikirim", mencoba MENDAPATKAN sesuatu darinya.
Berikut ini adalah konfigurasi pengujian saya:
# defaults
ssl_certificate /etc/certs/server.cer;
ssl_certificate_key /etc/certs/privkey-server.pem;
ssl_client_certificate /etc/certs/allcas.pem;
server {
listen 1443 ssl;
server_name server1.example.com;
root /tmp/root/server1;
ssl_verify_client off;
}
server {
listen 1443 ssl;
server_name server2.example.com;
root /tmp/root/server2;
ssl_verify_client on;
}
Server pertama membalas dengan 200 kode http, tetapi yang kedua mengembalikan "400 Permintaan Buruk, Tidak diperlukan sertifikat SSL yang dikirim, nginx / 1.0.4".
Mungkin, tidak mungkin menggunakan ssl_verify_client pada IP yang sama? Haruskah saya mengikat server ini ke IP yang berbeda, apakah ini akan menyelesaikan masalah saya?
Saya bukan ahli nginx, tetapi saya telah melihat masalah yang sama dengan apache menggunakan SSL dan host virtual. Masalahnya adalah urutan di mana server menangani negosiasi SSL versus pilihan host virtual. Langkah pertama adalah membuat koneksi terenkripsi, dan hanya setelah itu dilakukan server melihat nama host yang Anda minta. Dan sampai ia tahu, ia akan menggunakan pengaturan default - yang dalam hal ini adalah host pertama, yang memerlukan sertifikat klien untuk membangun koneksi SSL.
Jadi, jawaban singkat - dalam hal ini, Anda sebaiknya memiliki port yang terpisah atau alamat IP yang terpisah.
sumber
Saya mengalami masalah yang sama dan menemukan solusi.
Silakan coba tambahkan
default_server
tanda untuk server keduasumber