openssl ca: index.txt मा अमान्य म्याद समाप्ति मिति, र यसलाई कसरी ठीक गर्ने
index.txt को एउटा लाइन पार्स नहुने भएकाले CA ले जारी गर्न अस्वीकार गरिरहेको छ। CA को अवस्था प्रतिलिपि गर्नुहोस्, प्रविष्टि डिकोड गर्नुहोस्, त्यसपछि हस्ताक्षरित प्रमाणपत्रसँग मिलाउनुहोस्।
जारी गर्ने रन यहाँ रोकिन्छ: entry 22: invalid expiry date, तर तपाईंको अगाडि रहेको अनुरोध पूर्ण रूपमा ठीक छ। गुनासो CA डाटाबेसको पार्सरबाट आउँछ, CSR बाट होइन र अन्ततः प्रमाणपत्र प्रस्तुत गर्ने VPN क्लाइन्टबाट पनि होइन। यही भिन्नताले पछिको सबै कुरा निर्धारण गर्छ: रेकर्ड विकृत छ, त्यसैले सुधार CA को अवस्थामा पर्छ, अनुरोध वा पीयर कन्फिगरेसनमा होइन। क्रमाङ्कित प्रविष्टिलाई index.txt मा एउटा लाइनका रूपमा लिनुहोस्, र समस्या जाँच्न सकिने उत्तर भएको सीमित डाटा प्रश्नमा खुम्चिन्छ।
त्रुटिलाई डाटाबेसको गुनासोका रूपमा पढ्नुहोस्
हरेक openssl ca कलले केही हस्ताक्षर गर्नु अघि आफ्नो पाठ डाटाबेस हुँदै जान्छ। हरेक लाइनमा स्थिति अक्षर, म्याद समाप्तिको समयछाप, वैकल्पिक रद्दीकरण समयछाप, हेक्समा क्रमसंख्या, फाइल नाम र विषय हुन्छ। एउटा फिल्ड पार्स नभएमा आदेशले लाइन नम्बर बताउँछ र बाँकी रेकर्ड अनुमान गर्नुको सट्टा रोकिन्छ।
त्यो रोकावट कठोर होइन, संरक्षात्मक हो। उपकरणले पढ्न नसक्ने रेकर्डले मागिएको विषय पहिल्यै छ कि छैन, क्रमसंख्या दिइएको छ कि छैन, वा अर्को CRL मा के हुनुपर्छ भन्ने निर्णय गर्न असमर्थ बनाउँछ। खराब लाइन नाघेर अगाडि बढ्दा महिनौंपछि, सामान्यतया कसैले पनि व्याख्या गर्न नसक्ने रद्दीकरणको क्रममा बाहिर आउने त्यही शान्त असंगति सिर्जना हुन्थ्यो। सन्देशलाई डाटाको गुनासोका रूपमा पढ्नुहोस्, र अन्वेषण CA डाइरेक्टरीभित्रै रहन्छ।
केही छुनु अघि CA को अवस्था प्रतिलिपि गर्नुहोस्
डाटाबेस फाइल मात्र होइन, पूरै CA डाइरेक्टरीको स्न्यापसट लिनुहोस्। इन्डेक्स, यसको एट्रिब्युट फाइल, क्रमसंख्या र CRL नम्बरका फाइलहरू, निजी कुञ्जी र जारी गरिएका प्रमाणपत्रहरू सबै पछिका कार्यहरूमा सहभागी हुन्छन्, र एउटा पुनर्स्थापित गरेर अरू छोड्ने सुधारले दोस्रो घटना सिर्जना गर्छ। जहाँ छ त्यहाँ CA को आफ्नै ब्याकअप विधि प्रयोग गर्नुहोस्, र काम चल्दा निर्धारित जारी गर्ने काम रोक्नुहोस्।
असफल आदेशले वास्तवमा लोड गरेको OpenSSL बिल्ड र कन्फिगरेसन फाइल लेख्नुहोस्। इन्स्टलेसनहरू प्रायः एकभन्दा बढी CA डाइरेक्टरी राख्छन्, र त्रुटिको अर्थ चुनिएको कन्फिगरेसनले नाम दिने डाटाबेसको सन्दर्भमा मात्र हुन्छ।
प्रविष्टि खोज्नुहोस् र यसको मिति फिल्ड डिकोड गर्नुहोस्
रिपोर्ट गरिएको लाइन नम्बर पहिलो रेकर्डबाट गनिन्छ, त्यसैले sed -n '22p' index.txt यसको माथि खाली वा टिप्पणी लाइनहरू छैनन् भनी पुष्टि गरेपछि समस्याग्रस्त प्रविष्टिमा पर्छ। त्यो लाइन देखिने विभाजकसहित प्रिन्ट गर्नुहोस्, किनकि ट्याब र अन्त्यका खाली ठाउँहरू सामान्य हुन्छन् र साधारण सम्पादक विन्डोमा देखिँदैनन्।
म्याद सकिने फिल्ड वर्षमा भर पर्ने चौडाइ भएको समयछाप हो। 2049 सम्मका मानहरू UTCTime मा YYMMDDHHMMSSZ का रूपमा लेखिन्छन्, जबकि पछिका मानहरू चार अंकको वर्ष भएको GeneralizedTime मा जान्छन्। दुई ढाँचा मिसाउने, वा पार्सरले अब चार अंक खोज्ने ठाउँमा दुई अंकको वर्ष बोक्ने रेकर्ड ठ्याक्कै यही बिन्दुमा असफल हुन्छ। अवरुद्ध लेखनले छोडेको काटिएको फिल्ड पनि त्यस्तै।
रेकर्डलाई अर्को CA को फाइलसँग होइन, यसले सन्दर्भ गर्ने प्रमाणपत्रसँग तुलना गर्नुहोस्। हस्ताक्षरित प्रमाणपत्र वैधताले के भन्नुपर्छ भन्ने अधिकार हो, र यो पहिल्यै पार्स गर्न सकिने वस्तुका रूपमा छ।
हस्ताक्षरित प्रमाणपत्रको आधारमा रेकर्ड सुधार्नुहोस्
वास्तविक मितिहरू यसले पढ्नुहोस्: openssl x509 -in issued.pem -noout -dates -serial -subject। notAfter लाई तपाईंको बिल्डले त्यो वर्षका लागि लेख्ने छापको चौडाइमा बदल्नुहोस्, र एउटा अक्षर पनि बदल्नु अघि क्रमसंख्या तपाईंले सम्पादन गर्न लागेको प्रविष्टिसँग मिल्छ भनी पुष्टि गर्नुहोस्।
केवल बिग्रिएको फिल्ड सम्पादन गर्नुहोस्, स्थिति अक्षर र क्रमसंख्या राख्नुहोस्, र लाइनको बाँकी जस्ताको तस्तै राख्नुहोस्। कुनै पनि हस्ताक्षरित प्रमाणपत्रसँग रेकर्ड मिलाउन नसकिएमा यसलाई बाटो बिराएको प्रविष्टि मान्नुहोस् र लाइन हातले मेटाउनुको सट्टा CA को आफ्नै रद्दीकरण मार्गबाट अलग गर्नुहोस्।
वर्षको अनुमानसँग मिलाउन मिति काटेर सुधार नगर्नुहोस्। दुई अक्षरको कटाइ बिल्डहरूबीच सार्न मिल्दैन, र यसले डाटाबेसले भविष्यका दोहोरो विषय र CRL जाँचहरूलाई बताउने वैधता चुपचाप बदल्छ। मूल मान फर्काउन नसकिने भएमा नयाँ क्रमसंख्यामा पुनः जारी गर्नुहोस् र पुरानो किन छोडियो भनी लेख्नुहोस्। अडिट ट्रेल सुधारको भाग हो, यसको वरिपरिको कागजी काम होइन।
जानु अघि जारी गर्ने र CRL निर्माण जाँच्नुहोस्
उही कन्फिगरेसनसँग एउटा जारी गर्ने काम चलाउनुहोस् र यो लाइन नम्बरको गुनासो बिना पूरा हुन्छ भनी पुष्टि गर्नुहोस्। त्यसपछि openssl ca -gencrl -config openssl.cnf सँग CRL बनाउनुहोस् र यो पार्स हुन्छ भनी जाँच्नुहोस्, किनकि बिग्रिएको रेकर्ड हस्ताक्षर गर्दा होइन, प्रायः त्यहीँ बाहिर आउँछ।
नयाँ प्रमाणपत्र यसले जाँच्नुहोस्: openssl x509 -noout -dates -serial र CA ले भर्खरै लेखेको लाइनसँग तुलना गर्नुहोस्। स्थिति अक्षर र म्याद मिति प्रमाणपत्रसँग मिल्छ भनी, र openssl verify -CAfile ca.pem issued.pem त्रुटि बिना फर्कन्छ भनी पुष्टि गर्नुहोस्। त्यसपछि निर्धारित जारी गर्ने काम पुनर्स्थापित गर्नुहोस् र पहिलो रन हेर्नुहोस्, किनकि दोस्रो विकृत लाइनले तुरुन्तै आफ्नो जानकारी दिनेछ।