如何将用户证书指纹从Nginx传递给Shiny

时间:2019-02-23 17:05:40

标签: nginx shiny x509

我在nginx反向代理后面运行闪亮的服务器,以将SSL层添加到闪亮的应用程序中。所有有光泽的用户都已颁发X509证书来保护访问。我想将nginx所使用的X509证书的指纹作为参数传递给闪亮的应用程序,以识别确切连接的人员,从而基于此区分应用程序的行为。具体来说,我将仅显示该用户的相关数据。我通过在从/重定向到/ app位置的过程中添加证书指纹来使其与下面的nginx配置一起使用,这从安全角度来看并不理想。 是否有更好的方法来添加指纹以请求参数?

server {
    listen 8789 ssl;
    server_name my.server.name;

    ssl_certificate /etc/nginx/ssl/my.server.crt;
    ssl_certificate_key /etc/nginx/ssl/my.server.key;
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_client_certificate /etc/nginx/ssl/ca.shiny.crt;
    ssl_verify_client on;
    ssl_crl /etc/nginx/ssl/db/shiny/crl.shiny.pem;

    access_log /var/log/nginx/shiny.access.log;

    location /app/ {
      proxy_set_header        Host $host:8789;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_pass          http://localhost:3838;
      proxy_read_timeout  90;
      proxy_redirect      http:// https://;
    }

   location / {
      set $token '?crt=';
      return 302 https://my.server.name:8789/app/$token$ssl_client_fingerprint;
   }
}

0 个答案:

没有答案