2014-10-09 5 views
5

हम एक सुरक्षित नोड.जेएस सर्वर की योजना बना रहे हैं, जो कई तृतीय-पक्ष वेब सेवाओं का उपयोग करता है। प्रत्येक को ऐसे प्रमाण-पत्रों की आवश्यकता होती है जिन्हें ऑपरेशन टीम द्वारा कॉन्फ़िगर करने की आवश्यकता होगी।नोड.जेएस के लिए वेब सेवा प्रमाण-पत्र प्रबंधित करने के लिए सर्वोत्तम अभ्यास?

स्पष्ट रूप से वे उन्हें कॉन्फ़िगरेशन फ़ाइल में सादा पाठ में डाल सकते हैं।

माइक्रोसॉफ्ट .NET DPAPI के साथ एक बेहतर विकल्प प्रदान करता है - Credential storage best practices देखें। क्या आईआईएसएनओडी के माध्यम से इसे उपलब्ध कराने का कोई तरीका है? या नोड-जेएस कॉन्फ़िगरेशन के भीतर ऐसे प्रमाण-पत्र सुरक्षित करने के लिए कोई अन्य विकल्प है?

  • चार्ल्स

उत्तर

1

2 तरीके इसे सुरक्षित करने के लिए है:

पहले एक है जब आप अपने एप्लिकेशन लॉन्च आदेश पंक्ति पैरामीटर का प्रयोग है।

ये पैरामीटर तो process.argv

तो में पाए जाते हैं, node myapp.js username password आप देना होगा:

process.argv[0]=node 
process.argv[1]=/.../myapp.js (absolute path) 
process.argv[2]=username 
process.argv[3]=password 

दूसरा ENV चर के रूप में साख स्थापित करने के लिए है। इसे आम तौर पर सर्वोत्तम अभ्यास के रूप में माना जाता है क्योंकि केवल इन चरों तक पहुंच है।

आप, निर्यात आदेश का उपयोग चर सेट करने के लिए होगा की तुलना में आप process.env

+0

धन्यवाद देखें। लेकिन शायद मैंने खुद को स्पष्ट नहीं किया। यह एक वेब सर्वर होगा - कोई लॉन्च नहीं है जिसे मैं लॉन्च करता हूं। तो एनएनवी चर और कमांड लाइन पैरामीटर दोनों एक स्क्रिप्ट में होने के अंत में खत्म हो जाएगा; उनका उपयोग अतिरिक्त सुरक्षा नहीं देता है। या मुझसे कोई चीज चूक रही है? – CharlesW

+0

आपका नोड सर्वर अभी भी कहीं से लॉन्च होना होगा, इसलिए आप सर्वर पर एनवी चर सेट कर सकते हैं जो सर्वर चलाता है, नहीं? – xShirase

3

में इसे का उपयोग करता हूँ वहाँ दो xShirase ने सुझाव दिया सहित यहां कई विकल्प की एक व्यापक चर्चा है,:

http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html

उपयोगकर्ता परिभाषित सेवाएं समस्या हल करती है, लेकिन केवल क्लाउड फाउंड्री के लिए।

यह ब्लॉग http://encosia.com/using-nconf-and-azure-to-avoid-leaking-secrets-on-github/ बताता है कि आप अक्सर सर्वर पर अलग-अलग पर्यावरण चर सेट कर सकते हैं, और उन्हें पढ़ने और फ़ाइलों को अलग से कॉन्फ़िगर करने के लिए nconf का उपयोग करने का सुझाव देते हैं।

मुझे अभी भी आश्चर्य है कि आईआईएस के लिए विशेष हैं या नहीं?

  • चार्ल्स
0

मैं वर्तमान में मेरे बाहरी एपीआई क्रेडेंशियल के लिए सटीक एक ही बात करना था। यह है कि क्या मैं

  • नोड-config मॉड्यूल स्थापित
  • एक फ़ोल्डर और config बुलाया फ़ाइल बनाने/config.js
  • यहाँ
  • (config) मॉड्यूल
  • स्थानीय बॉक्स में आवश्यकता से configuation पढ़ता किया है local.json फ़ाइल
  • मेरे पास स्थानीय में डमी मान हैं।api कुंजी के लिए json और मेरे क्यूए पर्यावरण पर गुप्त
  • साझा मैं दो चर NODE_ENV = "क्यूए" निर्यात और NODE_CONFIG_DIR = "क्यूए सर्वर पर मेरी configuation फ़ोल्डर में पथ"
  • नोड-config मॉड्यूल configuation "पथ से करने के लिए पढ़ता है आपके config फ़ोल्डर/QA.json "
  • अब मैं असली api कुंजी और QA.json में क्रेडेंशियल
  • यहाँ
  • आप इन मूल्यों को एन्क्रिप्ट करने के लिए एक सुरक्षित तरीका का उपयोग और अपने एप्लिकेशन में QA.json
  • में उसे वापस कर सकते हैं पाने के इन कॉन्फ़िगरेशन मान और डिक्रिप्ट इसे अपने बाकी कॉल
में उपयोग करें

उम्मीद है कि यह मदद करता है।

इसलिए आपकी कॉन्फ़िगरेशन उसी कंटेनर में नोड कोड के रूप में रह सकती है।

इसके जवाब के लिए एन्क्रिप्शन और डिक्रिप्शन के लिए http://lollyrock.com/articles/nodejs-encryption/

संबंधित मुद्दे