क्या मैं LetsEncrypt के साथ पब्लिक-की-पिन का उपयोग कर सकता हूं?


10

क्या मैं पब्लिक-की-पिन सेटअप कर सकता हूं जब मैं हर 30 दिनों में LetsEncrypt प्रमाणपत्र को नवीनीकृत करने के लिए एक क्रोनजॉब सेटअप करता हूं?

यदि प्रमाणपत्र का नवीनीकरण किया जाता है, तो सार्वजनिक-कुंजी-पिन भी सही से नवीनीकृत किया जाता है?

जवाबों:


12

शुरुआत के साथ सावधानी के कुछ शब्द:

  • जानिए कि आप क्या कर रहे हैं, यदि आप HPKP को लागू करने की योजना बना रहे हैं।
  • यदि आप इसे सही नहीं करते हैं, या "यदि बुरी चीजें होती हैं", जो आपके नियंत्रण में नहीं हैं, तो आप अपने डोमेन को अनुपयोगी बना सकते हैं।
  • उदाहरण के लिए दस सेकंड की तरह, एक डोमेन के साथ अपने सेटअप का परीक्षण करना सुनिश्चित करें जो कि महत्वपूर्ण नहीं है, या बहुत कम कैश समय के साथ।
  • इस बारे में सोचें कि आप किन सीट्स को पिन करना चाहेंगे: रूट, इंटरमीडिएट, लीफ ...
  • इस बारे में सोचें कि क्या यह दूसरे (बैकअप) प्रमाण पत्र प्राधिकरण को पिन करने के लिए समझ में आता है, यह मध्यवर्ती प्रमाण पत्र और आपका पत्ता प्रमाण पत्र है।
  • सॉरी से बेहतर सुरक्षित: इस बारे में सोचें कि क्या किसी अन्य बैकअप सीए / सर्टिफिकेट को पिन करने के लिए समझ में आता है, दो के लिए।
  • यदि ये बिंदु और प्रश्न आपके लिए "नए" ध्वनि करते हैं: इससे पहले कि आप इसे लागू करें , तो एचपीकेपी क्या है और आम ट्रैप और कैविटीज़ के बारे में पढ़ें ।

क्या मैं LetsEncrypt के साथ पब्लिक-की-पिन का उपयोग कर सकता हूं?

  • हाँ।

यदि प्रमाणपत्र का नवीनीकरण किया जाता है, तो सार्वजनिक-कुंजी-पिन भी सही से नवीनीकृत किया जाता है?

  • यह इस बात पर निर्भर करता है कि आप किस सर्टिफिकेट का जिक्र कर रहे हैं और किस सर्टिफिकेट को पिन कर रहे हैं।

9

सब कुछ गूंज जाएगा कि gf_ ने कहा।

हालांकि, सवाल का जवाब देने के लिए, हां आप कर सकते हैं।

डिफ़ॉल्ट रूप से आइए एन्क्रिप्ट करें कुंजी और नवीनीकरण को नवीनीकृत करता है। यह एचपीकेपी को लागू करना मुश्किल बना देता है यदि आप पत्ती पर पिन करना चाहते हैं, जो आपको संभवतः मध्यवर्ती परिवर्तनों ( जैसे कि मार्च 2016 में किया गया था ) में करना चाहिए।

यदि आप अभी भी एचपीकेपी करना चाहते हैं तो इसके आसपास कई विकल्प हैं:

  1. मानक क्लाइंट के बजाय अपने स्वयं के निर्धारित CSR का उपयोग करें जो आपके लिए हर बार CSR बनाता है ताकि पत्ती कुंजी परिवर्तित न हो। यह ब्लॉग पोस्ट बताता है कि यह विशेष रूप से कैसे किया जाए क्योंकि लेखक एचपीकेपी का उपयोग करता है।
  2. छोटी एचपीकेपी एक्सपायरी का उपयोग करें और उस एक्सपायरी समय के भीतर नवीनीकृत करें और पॉलिसी को बदलने से पहले पुरानी और नई दोनों कुंजियों को बदलें, वास्तव में सर्टिफिकेट बदलने से पहले, नई पॉलिसी के लिए पर्याप्त समय किसी भी आगंतुक द्वारा उठाया जाए।
  3. पत्ती या सर्टिफिकेट के बजाय आइए एनक्रिप्टेड रूट को पिन करें।

1
अच्छा जोड़, +1।
gf_

क्या जड़ को पिन करना सुरक्षित है? MITM के लिए अपने स्वयं के लेट एनक्रिप्ट प्रमाण पत्र का उपयोग करना वास्तव में आसान है।
मेलबिक

2
लेट्स एनक्रिप्ट का उपयोग करके अपने डोमेन नाम के लिए एक प्रमाण पत्र प्राप्त करना किसी हमलावर के लिए "वास्तव में आसान" कैसे है? ऐसा करने के किसी भी तरीके के बारे में पता नहीं है। हालांकि यह किसी भी सीए के साथ संभव हो सकता है यदि उनके डोमेन सत्यापन प्रक्रियाओं में बग हैं। ले रूट को पिन करके आपने अपनी हमले की सतह को बड़े पैमाने पर कम कर दिया है चलो चलो दुनिया के हर सीए के विपरीत एन्क्रिप्ट करें। फिर भी उतना सुरक्षित नहीं है जितना कि मैं पत्ती को सहमत करता हूं, लेकिन यह स्वयं के जोखिम का परिचय देता है, इसलिए यह "सुरक्षित" की आपकी परिभाषा पर निर्भर करता है।
बैरी पोलार्ड

यह कहते हुए कि मुझे लगता है कि एचपीकेपी के लिए बड़े जोखिम हैं - ज्यादातर आत्मघाती दृष्टिकोण से - इसलिए मैं प्रशंसक नहीं हूं। यदि आप CA, या प्रमाणित पथ परिवर्तन (जैसे SHA-256 मूल्यह्रास के कारण) को बदलने का निर्णय लेते हैं, या तत्काल प्रमाण को फिर से जारी करना पड़ता है, या बैकअप कुंजी से समझौता हो जाता है / खो जाता है या वह व्यक्ति जो इसे छोड़ देता है और अगले व्यक्ति को एहसास नहीं होता है वे एचपीकेपी का उपयोग करते हैं और / या इसके बारे में नहीं जानते हैं। एचपीकेपी सुपरफिश जैसे स्थानीय जड़ों से भी रक्षा नहीं करता है। इसलिए, अधिकांश साइटों के लिए, एचपीकेपी बहुत जटिल है, और आईएमएचओ, थोड़ा अतिरिक्त सुरक्षा लाभ के लिए अतिरिक्त सुरक्षा के लायक नहीं है। लेकिन यह महज मेरी राय है।
बैरी पोलार्ड

ठीक है, मैंने केवल इसलिए पूछा क्योंकि मुझे लगा था, कि सभी LE प्रमाणपत्रों का मूल प्रमाणपत्र समान है। इसलिए यदि आप रूट को किसी अन्य ले सर्टिफिकेट के साथ पिन करते हैं, तो वह केवल एक MITM का उपयोग कर सकता है और यह स्वयं के प्रमाणपत्र में नकली है। क्या आपको पता है कि मेरा क्या मतलब है?
मेलबिक

5

मैं सिर्फ 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 दिन) एचपीकेपी उम्र के साथ एक गैर-सरकारी उपडोमेन पर तैनात किया ताकि यह भारी परेशानी का कारण न बने।


संपादित करें: मैंने आपको एचपीकेपी स्थापित करने में मदद करने के लिए कुछ स्क्रिप्ट लिखी हैं, चलो एनक्रिप्ट का उपयोग करके निर्जक्स का उपयोग करते हुए निर्जलित करें:

HPKPinx


3
मैंने दोनों दुनिया में सबसे अच्छा करने का फैसला किया। स्वचालित निजी कुंजी रोलओवर + एक स्थिर निजी कुंजी। अगर किसी की दिलचस्पी है, तो इसके बारे में एक ब्लॉगपोस्ट लिख सकते हैं।
15

1
यदि आप ऐसा करते हैं, तो कृपया अपनी पोस्ट संपादित करें और लिंक डालें - धन्यवाद!
gf_

धन्यवाद, मैं अपनी पूरी कोशिश करूँगा कि यह या अगले सप्ताह
biktor

2
लिंक जोड़ा गया। दस्तावेज़ीकरण अभी तक दुर्लभ है, लेकिन कोड वहाँ है ताकि आप इसे आज़मा सकें और उस पर हैक कर सकें।
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.