为什么NGINX将上游SSL证书传递给客户端?

首先,我知道在上游服务器上使用SSL并不理想。 在这个时候,我只是不能关掉它,需要离开它(不同的故事,不同的团队)。 我遇到的问题是我的证书设置或NGINX上的SSL终止。 当我点击该网站时,我的浏览器正在抛出错误,因为所提供的SSL证书是其所在上游服务器上的SSL证书(已过期 – 不同的故事,不同的团队)。 我错过了什么使SSL完全终止在NGINX,并成为客户使用的证书?

编辑:修复我可怜的语法。

upstream example { server 1.2.3.4:443; server 4.3.2.1:443; } server { listen 443 ssl; server_name example.org; ssl_certificate /etc/nginx/ssl/example.crt; ssl_certificate_key /etc/nginx/ssl/example.key; location / { proxy_pass https://example/; proxy_set_header Host $host; } ssl_protocols TLSv1.2; ssl_ciphers "AES256+EECDH:AES256+EDH:!aNULL"; ssl_prefer_server_ciphers on; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; } 

这是在黑暗中的一个镜头,但我的猜测是,如果对proxy_pass行为(passthrough vs proxy)有任何歧义,这将确保您确实代理: https : //www.nginx.com/资源/pipe理引导/ nginx的-HTTPS的上行stream/

由于您的上游可能不关心您使用的客户端SSL证书,因此您可能只需生成自签名伪造客户端证书(或只是重复使用您现有的nginx证书),看看会发生什么… 🙂

简而言之,在您的location /块中的proxy_pass之后添加proxy_ssl_certificateproxy_ssl_certificate_key 。 如上所述,尝试两个自签名的证书,或者只是重用你的/etc/nginx/ssl/example.crt/etc/nginx/ssl/example.key …这些都不重要,因为你的上游不是希望获得特定的客户端authentication。