यदि आप फुल चेन सर्टिफिकेट (यानी लेटेन्सक्रिप्ट / सर्टिफिकेट आदि द्वारा जेनरेट किए गए हैं) को हैंडल कर रहे हैं, जो सर्टिफिकेट और सर्टिफिकेट अथॉरिटी चेन का एक कॉनसेप्ट हैं, तो आप बैश स्ट्रिंग मैनिपुलेशन का उपयोग कर सकते हैं।
उदाहरण के लिए:
# content of /path/to/fullchain.pem
-----BEGIN CERTIFICATE-----
some long base64 string containing
the certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
another base64 string
containing the first certificate
in the authority chain
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
another base64 string
containing the second certificate
in the authority chain
(there might be more...)
-----END CERTIFICATE-----
प्रमाणपत्र और प्रमाणपत्र प्राधिकरण श्रृंखला को चर में निकालने के लिए:
# load the certificate into a variable
FULLCHAIN=$(</path/to/fullchain.pem)
CERTIFICATE="${FULLCHAIN%%-----END CERTIFICATE-----*}-----END CERTIFICATE-----"
CHAIN=$(echo -e "${FULLCHAIN#*-----END CERTIFICATE-----}" | sed '/./,$!d')
स्पष्टीकरण:
इसके बजाय awk या opsl (जो शक्तिशाली उपकरण हैं, लेकिन हमेशा उपलब्ध नहीं हैं, यानी डॉकर अल्पाइन छवियों में) का उपयोग करने के बजाय, आप बैश स्ट्रिंग हेरफेर का उपयोग कर सकते हैं।
"${FULLCHAIN%%-----END CERTIFICATE-----*}-----END CERTIFICATE-----": फुलचैन की सामग्री के अंत से, सबसे लंबे समय तक प्रतिस्थापित होने वाले मैच को वापस लौटाएं, फिर -----END CERTIFICATE-----इसे हटा दें। के *बाद सभी पात्रों से मेल खाता है -----END CERTIFICATE-----।
$(echo -e "${FULLCHAIN#*-----END CERTIFICATE-----}" | sed '/./,$!d'): फुलचैन की सामग्री की शुरुआत से, सबसे छोटा सबरिंग मैच लौटाएं, फिर नई लाइनों को लीड करें। इसी तरह, *पहले सभी पात्रों से मेल खाता है -----END CERTIFICATE-----।
एक त्वरित संदर्भ के लिए (जब आप यहां बैश में स्ट्रिंग हेरफेर के बारे में अधिक जान सकते हैं ):
${VAR#substring}= VAR की सामग्री की शुरुआत से सबसे छोटा प्रतिस्थापन
${VAR%substring}= VAR की सामग्री के अंत से सबसे छोटा विकल्प
${VAR##substring}= VAR की सामग्री की शुरुआत से सबसे लंबा प्रतिस्थापन
${VAR%%substring}= VAR की सामग्री के अंत से सबसे लंबा प्रतिस्थापन