केवल किसी विशेष स्थान पर क्लाइंट सेर्ट्स की पुष्टि करता है


14

हम अपने वेब एप्लिकेशन सर्वर के लिए Nginx को एक रिवर्स प्रॉक्सी के रूप में उपयोग करते हैं। 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
@EliCourtwright मुझे पता है कि यह सवाल बहुत समय पहले था, लेकिन क्या आपने कभी दो सर्वर ब्लॉक से बेहतर समाधान खोजा?
एन जोन्स

2
@JJones: दुर्भाग्य से नहीं, यह वही है जिसके साथ हमें जाना था।
एली कोर्टराइट

क्या होगा अगर सब कुछ एक ही डोमेन www.example.com के लिए उत्तर दें? क्या इस तरह का एक दृष्टिकोण अभी भी काम कर सकता है?
फ्रीडम_बेंन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.