Nous utilisons Nginx comme proxy inverse de notre serveur d'applications Web. Nginx gère notre SSL et autres mais agit simplement comme un proxy inverse.
Nous voulons exiger un certificat client valide pour les demandes, /jsonrpc
mais pas les exiger ailleurs. La meilleure façon que nous avons trouvée est de
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/;
}
}
Cela fonctionne très bien pour la plupart des navigateurs, mais certains navigateurs tels que Safari et Chrome sur Android finissent par inviter l'utilisateur à fournir un certificat client, peu importe où sur le site Web ils vont.
Comment pouvons-nous amener Nginx à accepter mais sans vraiment se soucier d'un certificat client partout sauf à notre /jsonrpc
emplacement?
server
bloc. Nous n'avons pas eu ce même problème lors de l'utilisation d'Apache, alors j'espérais qu'il y aurait un paramètre qui fonctionnerait ici.