Ssl 如何通过两台服务器nginx传递客户端证书?

Ssl 如何通过两台服务器nginx传递客户端证书?,ssl,nginx,proxy,reverse-proxy,client-certificates,Ssl,Nginx,Proxy,Reverse Proxy,Client Certificates,我有理由在应用服务器之前使用两个nginx服务器。 两台nginx服务器都使用SSL连接。 Nginx1(SSL 443和SSL验证\u客户端打开)->Nginx2(SSL 443)->App(9000) 在第一台Nginx1服务器上,我使用以下选项:proxy\u set\u header client\u cert$ssl\u client\u cert 在第二台服务器Nginx2上,我使用以下选项:在上的\u头中加下划线 问题是,第二台Nginx2服务器只发送证书的第一行-“----开始证

我有理由在应用服务器之前使用两个nginx服务器。 两台nginx服务器都使用SSL连接。
Nginx1(SSL 443和SSL验证\u客户端打开)->Nginx2(SSL 443)->App(9000)

在第一台Nginx1服务器上,我使用以下选项:
proxy\u set\u header client\u cert$ssl\u client\u cert
在第二台服务器Nginx2上,我使用以下选项:
在上的\u头中加下划线

问题是,第二台Nginx2服务器只发送证书的第一行-“----开始证书------”


如何将客户端证书传递到应用程序服务器?

Nginx无一例外地终止SSL,因此,如果您仍然需要此配置,则需要重新进行SSL配置,并在服务器上保留证书(如下所示)或基于在TCP模式下使用HAProxy。这是本文。

我找到了代理客户端证书的解决方法

# NGINX1
...
map $ssl_client_raw_cert $a {
    "~^(-.*-\n)(?<1st>[^\n]+)\n((?<b>[^\n]+)\n)?((?<c>[^\n]+)\n)?((?<d>[^\n]+)\n)?((?<e>[^\n]+)\n)?((?<f>[^\n]+)\n)?((?<g>[^\n]+)\n)?((?<h>[^\n]+)\n)?((?<i>[^\n]+)\n)?((?<j>[^\n]+)\n)?((?<k>[^\n]+)\n)?((?<l>[^\n]+)\n)?((?<m>[^\n]+)\n)?((?<n>[^\n]+)\n)?((?<o>[^\n]+)\n)?((?<p>[^\n]+)\n)?((?<q>[^\n]+)\n)?((?<r>[^\n]+)\n)?((?<s>[^\n]+)\n)?((?<t>[^\n]+)\n)?((?<v>[^\n]+)\n)?((?<u>[^\n]+)\n)?((?<w>[^\n]+)\n)?((?<x>[^\n]+)\n)?((?<y>[^\n]+)\n)?((?<z>[^\n]+)\n)?((?<ab>[^\n]+)\n)?((?<ac>[^\n]+)\n)?((?<ad>[^\n]+)\n)?((?<ae>[^\n]+)\n)?((?<af>[^\n]+)\n)?((?<ag>[^\n]+)\n)?((?<ah>[^\n]+)\n)?((?<ai>[^\n]+)\n)?((?<aj>[^\n]+)\n)?((?<ak>[^\n]+)\n)?((?<al>[^\n]+)\n)?((?<am>[^\n]+)\n)?((?<an>[^\n]+)\n)?((?<ao>[^\n]+)\n)?((?<ap>[^\n]+)\n)?((?<aq>[^\n]+)\n)?((?<ar>[^\n]+)\n)?((?<as>[^\n]+)\n)?((?<at>[^\n]+)\n)?((?<av>[^\n]+)\n)?((?<au>[^\n]+)\n)?((?<aw>[^\n]+)\n)?((?<ax>[^\n]+)\n)?((?<ay>[^\n]+)\n)?((?<az>[^\n]+)\n)*(-.*-)$"
    $1st;
}
server {
...
  location  / {
  ...
    proxy_set_header client_cert $a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$v$u$w$x$y$z$ab$ac$ad$ae$af$ag$ah$ai$aj$ak$al$am$an$ao$ap$aq$ar$as$at$av$au$aw$ax$ay$az;
  ...
  }
  ...
}



# NGINX 2

server {
   ...
   underscores_in_headers on;
   ...
   location  / {
        proxy_pass_request_headers      on;
        proxy_pass http://app:9000/;
   }
   ...
}
#NGINX1
...
映射$ssl\客户端\原始\证书$a{
(3)在(3)月[n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n(3)n)n)n)n(3)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)n)(?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?(?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?(?[^\n]+)\n)?((?[^\n]+))\n)?(((?[^\n]+)))+)\n)?((((?[^\n]+))))\n)((3)在(3)月10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10)\n)?((?[^\n]+)\n)?(?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)?(?[^\n]+)\n)?((?[^\n]+)\n)?(((?[^\n]+)\n)?((?[^\n]+)\n)?((?[^\n]+)\n)+\n)?(((?[^\n]+))\n)?(((?[^\n]+)\n)?((?[^\n]+)\n)*-(.*-)$”
$1st;
}
服务器{
...
地点/{
...
代理设置客户端证书a$b$c$d$e$f$g$i$j$k$l$m$n$o$p$q$r$s$t$v$u$w$x$y$z$ab$ac$ad$ae$af$ag$ah$ai$aj$ak$am$ao$ap$aq$ar$as$at$av$au$aw$ax$ay$az;
...
}
...
}
#NGINX 2
服务器{
...
在上的\u标题中加下划线;
...
地点/{
代理\u传递\u请求\u头打开;
代理通行证http://app:9000/;
}
...
}

感谢您的回复。我找到了解决方案,并对其进行了描述。