Nginxを、Tomcatを実行している内部Webサーバーへのリバースプロキシとして使用しようとしています。Tomcatは、ERPシステムのフロントエンドをホストしています。
それはすでに正常に動作しています:nginxサーバー(ネットワーク、別のVLAN、ファイアウォールなどでロックされている)に完全に接続してから、リバースプロキシを私のERPサーバーに接続できます。
ただし、ユーザーが最初の(nginx)サーバーにアクセスできるように、ユーザーが自分のコンピューターにデジタル証明書を持っていることを要求することにより、追加の保護層を追加したいと思います。証明書は使用されていません/バックエンドサーバーに必要です。
私はこのチュートリアルを済ませました http://nategood.com/client-side-certificate-authentication-in-ngi これにより、自己署名証明書およびその他すべてを生成できました。
Nginx構成でssl_verify_client optionalを使用すると、バックエンドサーバーに正常に接続できますが、証明書は要求/要求されません。
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コンボを使用することでした。