Nginx
nginx - 反向代理證書認證
我正在嘗試使用 nginx 作為執行 Tomcat 的內部網路伺服器的反向代理,該伺服器託管我們 ERP 系統的前端。
它已經工作正常:我可以完美地連接到 nginx 伺服器(它被鎖定在我們的網路、不同的 VLAN、防火牆等),然後反向代理到我的 ERP 伺服器。
但是,我想通過要求使用者在他們的電腦上擁有數字證書來添加額外的保護層,以便他們可以訪問第一台(nginx)伺服器。後端伺服器不使用/不需要證書。
我已經閱讀了本教程 http://nategood.com/client-side-certificate-authentication-in-ngi ,它允許我生成我的自簽名證書和其他所有內容。
在 nginx 配置上使用可選的 ssl_verify_client時,我可以正常連接到我的後端伺服器,但不要求/不需要證書。
當我將其切換到ssl_verify_client on 時,所有訪問都會被
400 Bad Request No required SSL certificate was sent
無論我使用哪種瀏覽器(Chrome、IE、Edge、Firefox)。當然,我已經將所有證書/鏈放在我的客戶端電腦上,但在任何瀏覽器上都沒有要求提供證書。我錯過了什麼?
這是我的完整 nginx 配置:
server { listen 443; ssl on; server_name 103vportal; ssl_password_file /etc/nginx/certs/senha.txt; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; ssl_client_certificate /etc/nginx/certs/ca.crt; ssl_verify_client on; location / { proxy_pass http://10.3.0.244:16030; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 300; proxy_send_timeout 300; } }
這個答案對我有用:
https://stackoverflow.com/questions/41933654/nginx-reverse-proxy-certificate-authentication
訣竅是創建個人證書(通過提供的命令)並使用證書下的主機名/DNS 組合。