Wir verwenden Nginx als Reverse-Proxy für unseren Webanwendungsserver. Nginx verwaltet unser SSL und dergleichen, fungiert aber ansonsten nur als Reverse-Proxy.
Wir möchten ein gültiges Client-Zertifikat für Anfragen /jsonrpc
benötigen, benötigen diese aber nirgendwo anders. Der beste Weg, den wir gefunden haben, ist zu
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/;
}
}
Dies funktioniert für die meisten Browser einwandfrei, aber einige Browser wie Safari und Chrome-on-Android fordern den Benutzer schließlich auf, ein Client-Zertifikat bereitzustellen, unabhängig davon, wo auf der Website sie sich befinden.
Wie bringen wir Nginx dazu, ein Kundenzertifikat überall außer an unserem /jsonrpc
Standort zu akzeptieren, aber nicht wirklich zu interessieren ?
server
Block platzieren können. Wir hatten nicht das gleiche Problem bei der Verwendung von Apache, daher hatte ich gehofft, dass hier eine Einstellung funktionieren würde.