Nginx যাচাই করা ক্লায়েন্ট শংসাপত্রগুলি কেবলমাত্র একটি নির্দিষ্ট স্থানে


14

আমরা আমাদের ওয়েব অ্যাপ্লিকেশন সার্ভারে বিপরীত প্রক্সি হিসাবে Nginx ব্যবহার করি। এনগিনেক্স আমাদের এসএসএল এবং এগুলি পরিচালনা করে তবে অন্যথায় কেবল বিপরীত প্রক্সি হিসাবে কাজ করে।

আমরা অনুরোধের জন্য একটি বৈধ ক্লায়েন্ট সার্টিফিকেট চাই /jsonrpcতবে অন্য কোথাও তাদের প্রয়োজন নেই। আমরা সবচেয়ে ভাল উপায় খুঁজে পেয়েছি হয়

server {
  listen       *:443 ssl;

  ssl on;
  ssl_certificate         /etc/nginx/server.crt;
  ssl_certificate_key     /etc/nginx/server.key;
  ssl_client_certificate  /etc/nginx/client-ca.crt;

  ssl_verify_client optional;

  location /jsonrpc {
    if ($ssl_client_verify != "SUCCESS") { return 403; }

    proxy_pass          http://localhost:8282/jsonrpc-api;
    proxy_read_timeout  90;
    proxy_redirect      http://localhost/ $scheme://$host:$server_port/;
  }
}

এটি বেশিরভাগ ব্রাউজারের জন্য দুর্দান্ত কাজ করে তবে সাফারি এবং ক্রোম-অন-অ্যান্ড্রয়েডের মতো কিছু ব্রাউজার ব্যবহারকারীদের কোনও ক্লায়েন্ট শংসাপত্র সরবরাহ করতে অনুরোধ করে তবে তারা যে ওয়েবসাইটেই চলে না কেন।

আমরা কীভাবে এনগিনেক্সকে গ্রহণ করতে পারি তবে আমাদের /jsonrpcঅবস্থান ব্যতীত অন্য কোথাও কোনও ক্লায়েন্ট সার্ট সম্পর্কে সত্যই যত্নশীল না ?

উত্তর:


8

পরিবর্তে দ্বিতীয় সার্ভার ব্লক চেষ্টা করবেন না কেন ? কোড সদৃশটি খারাপ তবে কখনও কখনও অনিবার্য। আমি ধরে নিয়েছি / jsonrpc একটি এপিআই উপস্থাপন করে যাতে এটি ইতিমধ্যে এটি ব্যবহার না করা হলে তার নিজস্ব সাবডোমেন ব্যবহার করতে পারে:

server {
  listen       *:443 ssl;
  server_name api.example.com;

  ssl on;
  ssl_certificate         /etc/nginx/server.crt;
  ssl_certificate_key     /etc/nginx/server.key;
  ssl_client_certificate  /etc/nginx/client-ca.crt;

  ssl_verify_client on;

  location =/jsonrpc {
    proxy_pass          http://localhost:8282/jsonrpc-api;
    proxy_read_timeout  90;
    proxy_redirect      http://localhost/ $scheme://$host:$server_port/;
  }
}

server {
  listen       *:443 ssl;

  ssl on;
  ssl_certificate         /etc/nginx/server.crt;
  ssl_certificate_key     /etc/nginx/server.key;
  ssl_client_certificate  /etc/nginx/client-ca.crt;

  ssl_verify_client off;

  location / {
    proxy_pass          http://localhost:8282/;
    proxy_read_timeout  90;
    proxy_redirect      http://localhost/ $scheme://$host:$server_port/;
  }
}

আমরা সম্ভবত একই কাজটি করব যদি আমরা একই serverব্লকের মধ্যে সঠিক কনফিগারেশনটি রাখার কোনও উপায় বের করতে না পারি । অ্যাপাচি ব্যবহার করার সময় আমাদের কাছে এই একই সমস্যা ছিল না, তাই আমি আশা করি যে এখানে এমন কিছু সেটিংস কাজ করবে যা এখানে কাজ করবে।
এলি কোর্টরাইট

1
@ এলিকোর্ট রাইট আমি জানি এই প্রশ্নটি অনেক আগে হয়েছিল তবে আপনি কি কখনও দুটি সার্ভার ব্লকের চেয়ে ভাল সমাধান খুঁজে পেয়েছেন?
এন জোন্স

2
@ জোনস: দুর্ভাগ্যক্রমে না, আমাদের যা করতে হয়েছিল তা হল।
এলি কোর্টরাইট

যদি সব একই ডোমেইনের www.example.com এর উত্তর দিতে হয় তবে কী হবে? এই মত একটি পদ্ধতির এখনও কাজ করতে পারেন?
Freedom_Ben
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.