क्या मैं पब्लिक-की-पिन सेटअप कर सकता हूं जब मैं हर 30 दिनों में LetsEncrypt प्रमाणपत्र को नवीनीकृत करने के लिए एक क्रोनजॉब सेटअप करता हूं?
यदि प्रमाणपत्र का नवीनीकरण किया जाता है, तो सार्वजनिक-कुंजी-पिन भी सही से नवीनीकृत किया जाता है?
क्या मैं पब्लिक-की-पिन सेटअप कर सकता हूं जब मैं हर 30 दिनों में LetsEncrypt प्रमाणपत्र को नवीनीकृत करने के लिए एक क्रोनजॉब सेटअप करता हूं?
यदि प्रमाणपत्र का नवीनीकरण किया जाता है, तो सार्वजनिक-कुंजी-पिन भी सही से नवीनीकृत किया जाता है?
जवाबों:
शुरुआत के साथ सावधानी के कुछ शब्द:
क्या मैं LetsEncrypt के साथ पब्लिक-की-पिन का उपयोग कर सकता हूं?
यदि प्रमाणपत्र का नवीनीकरण किया जाता है, तो सार्वजनिक-कुंजी-पिन भी सही से नवीनीकृत किया जाता है?
सब कुछ गूंज जाएगा कि gf_ ने कहा।
हालांकि, सवाल का जवाब देने के लिए, हां आप कर सकते हैं।
डिफ़ॉल्ट रूप से आइए एन्क्रिप्ट करें कुंजी और नवीनीकरण को नवीनीकृत करता है। यह एचपीकेपी को लागू करना मुश्किल बना देता है यदि आप पत्ती पर पिन करना चाहते हैं, जो आपको संभवतः मध्यवर्ती परिवर्तनों ( जैसे कि मार्च 2016 में किया गया था ) में करना चाहिए।
यदि आप अभी भी एचपीकेपी करना चाहते हैं तो इसके आसपास कई विकल्प हैं:
मैं सिर्फ dns01 सत्यापन के साथ निर्जलित ग्राहक का उपयोग कर इसे लागू किया । Dns01 हुक प्रमाणित है क्योंकि हमारे DNS को Azure में होस्ट किया गया है।
संपादित करें: जब मैं निजी कुंजी के बारे में बात करता हूं, तो जाहिर है मेरा हमेशा मतलब है कि आप केवल सार्वजनिक कुंजी भागों को पिन में बदलते हैं। निजी कुंजी, जैसा कि नाम से पता चलता है, हमेशा निजी रहना चाहिए। कार्यान्वयन विवरण के लिए अपना स्वयं का हुक देखें।
इसे संभव बनाने के लिए आपको निजी कुंजी रोलओवर की आवश्यकता है। यही है, आपके पास हमेशा वर्तमान निजी कुंजी (इसे कॉल ए) और भविष्य की निजी कुंजी (कॉल बी) हाथ में है, ताकि आप उन दोनों को अपने पिन में जोड़ सकें। तो इस बिंदु पर आपके पिन ए और बी हैं। जब प्रमाणपत्र नवीनीकरण का दिन आता है, तो निजी कुंजी ए अप्रचलित हो जाती है और बी लाइव हो जाता है। एक ही समय में आपको एक नई भविष्य की निजी कुंजी मिलती है, इसे सी कहते हैं। आप अपनी पिन सूची को पुन: प्राप्त करते हैं इसलिए अब इसमें बी और सी शामिल हैं। इस प्रकार आप अपनी निजी कुंजी को रोल करते हैं। निर्जलित अब इसका समर्थन करता है ।
इसके अलावा, आपको एक हुक की आवश्यकता होती है जिसे हर बार जब आप अपने अनाज को नवीनीकृत करते हैं और इस प्रकार अपनी निजी चाबियों को रोल करते हैं। मैंने अपने दम पर इसे लागू किया ।
अंत में, अगर मुझे यह अधिकार मिलता है, तो आप यह सुनिश्चित करेंगे कि:
HPKP age x 2 < days between cert renewals
उदाहरण के लिए, यदि आपकी HPKP की उम्र 50 दिन है और आप हर 30 दिनों में सेरेट का नवीनीकरण करते हैं, तो एक ग्राहक जो आपकी साइट पर एक दिन आया था, वह निजी कुंजी A और B के साथ अटका रहेगा, और आपने दिन के 31 पर B और C को रोल किया। सर्वर में B और C है, क्लाइंट के पास A और B है, 50 वें दिन भी एक मैच है और क्लाइंट साइट को सही तरीके से खोलता है।
लेकिन देखते हैं कि क्या एचपीकेपी की उम्र 70 दिन है। आप प्रत्येक 30 दिनों में सेरेन्स को नवीनीकृत करते हैं, और ग्राहक आपकी साइट पर एक दिन पर जाता है, इसलिए फिर से, इसमें केवल निजी कुंजी ए और बी हैं। आप दिन के 31 बजे बी और सी में लुढ़के, और दिन में सी और डी पर लुढ़क गए। । आपके सर्वर में C और D है, क्लाइंट के पास A और B है, कोई मेल नहीं है और क्लाइंट को दिन की 61 से दिन की 71 तक मिडिल फिंगर दी जाती है, जब उसकी HPKP पॉलिसी समाप्त हो जाती है।
एक और, शायद सुरक्षित, और निश्चित रूप से बहुत सरल विकल्प एक ही निजी कुंजी का हर बार उपयोग कर रहा है और एक या कई बैकअप निजी कुंजी उत्पन्न कर रहा है, फिर इन्हें अपने एचपीकेपी कॉन्फ़िगरेशन में हार्डकोड करें और इसके साथ किया जाए।
हाँ, यह मुश्किल है और ऐसे कैवियट हो सकते हैं जिनके बारे में मैंने नहीं सोचा था, लेकिन हम लंबे समय में देखेंगे। जाहिर है कि मैंने इसे छोटे (15 दिन) एचपीकेपी उम्र के साथ एक गैर-सरकारी उपडोमेन पर तैनात किया ताकि यह भारी परेशानी का कारण न बने।
संपादित करें: मैंने आपको एचपीकेपी स्थापित करने में मदद करने के लिए कुछ स्क्रिप्ट लिखी हैं, चलो एनक्रिप्ट का उपयोग करके निर्जक्स का उपयोग करते हुए निर्जलित करें: