Nginx weblogic SSL 双向验证服务器获取浏览器证书

Nginx 开启了 SSL 双向验证, weblogic 也开启了双向验证。浏览器访问 Nginx、Nginx 访问 webogic 都需要证书,Nginx 配置如下:

    server {
        error_log     logs/info.log info;
        listen       9105 ssl default_server;
        server_name  192.168.7.163;

        #证书文件
        ssl_certificate     C:/OpenSSL/bin/server/server-cert.pem;
        #私钥文件
        ssl_certificate_key C:/OpenSSL/bin/server/server-key.pem;
        # 开启 ssl 双向认证
        #ssl_client_certificate C:/OpenSSL/bin/test/ca-cert.pem; 
        ssl_client_certificate C:/OpenSSL/bin/ca/ca-cert.pem;
        ssl_verify_client on;
        ssl_prefer_server_ciphers on;
        #设置长连接
        keepalive_timeout   70;
    location /portal1 {
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ssl_certificate     C:/OpenSSL/bin/test/user-cert.pem;
        proxy_ssl_certificate_key C:/OpenSSL/bin/test/user-key.pem;
        proxy_set_header X-Forwarded-Proto https; 
        proxy_ssl_protocols TLSv1 SSLv3;
        proxy_http_version 1.1;
        proxy_ssl_ciphers DEFAULT:!DH; 
        proxy_ssl_server_name on;
        proxy_ssl_session_reuse off;
        proxy_set_header X-SSL-Client-Cert $ssl_client_cert;
        proxy_set_header Client-Cert $ssl_client_cert;
        proxy_pass https://192.168.7.163:20021/portal;
    }

目前问题是:weblogic 端怎样获取浏览器访问 nginx 的证书而不是 Nginx 反向代理 weblogic 时通过如下配置配置的固定的证书

proxy_ssl_certificate     C:/OpenSSL/bin/test/user-cert.pem;
proxy_ssl_certificate_key C:/OpenSSL/bin/test/user-key.pem;

java 中获取证书代码如下, 这段代码获取的始终是 Nginx 反向代理配置的证书而不是浏览器访问 Nginx 的证书:

X509Certificate[] certs=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
阅读 5.6k
2 个回答

进行相关搜索后发现目前的 Nginx 不支持将客户端的证书代理给服务端

新手上路,请多包涵

正好碰到了这个问题,我也试了很多方法,最后转变了思路,你看能不能用上。
如果你是为了对外(不是nginx和tomcat间)的安全,那么nginx已经替你认证过了,tomcat就不用了。
你取证书是为了取用户名的话,可以在nginx里直接取到$ssl_client_s_dn ,返回建立的SSL连接中客户端证书的DN主题字段,里面是包含用户名的,你直接把这个存到header里,在后面的应用服务器直接取Header就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题