यह मुद्दा काफी हद तक संस्करण पर निर्भर करता है। उबंटू 14.04 एलटीएस पर डिफ़ॉल्ट नगनेक्स एक पुराना 1.4 है। सबसे पहले आपको पीपीए आधारित संस्करण स्थापित करने की आवश्यकता है
https://leftshift.io/upgrading-nginx-to-the-latest-version-on-ubuntu-servers
दिखाता है कि यह कैसे करना है:
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
आपको समाप्त होना चाहिए:
nginx -v
nginx version: nginx/1.8.0
@ Xatr0z जवाब से विन्यास https://serverfault.com/a/636455/162693 की ओर इशारा करते http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Certificate
नहीं काम करता है:
गैर-कार्य प्रस्ताव
backend {
server some-ip:443;
}
server {
listen 80;
location / {
proxy_ssl_certificate certs/client.crt;
proxy_ssl_certificate_key certs/client.key;
proxy_pass https://backend;
}
}
1.8.0 के साथ बॉक्स से बाहर काम नहीं करता है। यह शायद केवल एक संकेत के रूप में होता है और इसे कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग नहीं किया जाता है या किसी अन्य संस्करण पर निर्भर करता है।
मैं एक अपाचे 2 आधारित बैकएंड सर्वर ए के साथ एसएसएल और स्व-हस्ताक्षरित क्लाइंट प्रमाण पत्र सक्षम कर रहा हूं। अपाचे कॉन्फिगर एसएसएल्यूएशन निम्न पर सेट हैं:
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
यह स्थिति को डीबग करना आसान बनाता है क्योंकि बैकएंड साइड पर एक phpinfo () स्क्रिप्ट सर्वर और क्लाइंट साइड जानकारी दिखाएगा।
यह सत्यापित करने के लिए मैंने प्रयोग किया है:
https: // बैकएंड / परीक्षण / phpinfo
ब्राउज़र में स्थापित एसएसएल प्रमाणपत्र के साथ और मुझे इस तरह के अनुभाग मिलते हैं: क्लाइंट प्रमाण पत्र के लिए सर्वर प्रमाणपत्र के लिए एसएसएल_सर्वर_एस_एनडीएनसी और क्लाइंट प्रमाण पत्र के लिए SSL_CLIENT_S_DN_CN।
एक पहली शुरुआत के रूप में मैंने उपयोग किया (कोष्ठक में भागों को भरने के लिए) दृश्यपटल सर्वर B पर nginx को कॉन्फ़िगर करने के लिए:
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
#proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
#proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
एसएसएल क्लाइंट सर्टिफिकेट विशिष्ट भाग को केवल यह जांचने के लिए कि रिवर्स प्रॉक्सी स्वयं काम करता है।
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
अब http: // frontend: 8080 / test / phpinfo.php काम करता है
सर्वर प्रमाणपत्र के लिए SSL_SERVER_S_DN_CN प्रदर्शित होता है और क्लाइंट प्रमाणपत्र के लिए SSL_CLIENT_S_DN_CN (अभी तक) प्रदर्शित नहीं होता है
अब असहज होने के बाद:
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
और जाँच / पुनः आरंभ करना
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
http: // frontend: 8080 / test / phpinfo.php काम करता है और
सर्वर प्रमाण पत्र के लिए SSL_SERVER_S_DN_CN प्रदर्शित किया जाता है और क्लाइंट प्रमाणपत्र के लिए SSL_CLIENT_S_DN_CN प्रदर्शित किया जाता है
इसलिए अब हमें काम की चीजें मिल गई हैं।
कृपया बग https://trac.nginx.org/nginx/ticket/872#ticket पर ध्यान दें