Kami menggunakan Nginx sebagai proxy terbalik ke server aplikasi web kami. Nginx menangani SSL kami dan yang lainnya berfungsi sebagai proxy terbalik.
Kami ingin meminta sertifikat klien yang valid untuk permintaan /jsonrpc
tetapi tidak memerlukannya di tempat lain. Cara terbaik yang kami temukan adalah
server {
listen *:443 ssl;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_client_certificate /etc/nginx/client-ca.crt;
ssl_verify_client optional;
location /jsonrpc {
if ($ssl_client_verify != "SUCCESS") { return 403; }
proxy_pass http://localhost:8282/jsonrpc-api;
proxy_read_timeout 90;
proxy_redirect http://localhost/ $scheme://$host:$server_port/;
}
}
Ini berfungsi dengan baik untuk sebagian besar browser, tetapi beberapa browser seperti Safari dan Chrome-on-Android pada akhirnya mendorong pengguna untuk memberikan sertifikat klien ke mana pun di situs web mereka pergi.
Bagaimana kami membuat Nginx menerima tetapi tidak benar-benar peduli dengan sertifikat klien di mana pun kecuali /jsonrpc
lokasi kami ?
sumber
server
blok yang sama . Kami belum memiliki masalah yang sama saat menggunakan Apache, jadi saya berharap ada beberapa pengaturan yang akan berfungsi di sini.