वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज (एसएक्सजी) दिखाने का तरीका जानें.
साइन किया गया एक्सचेंज (एसएक्सजी), डिलीवरी का एक तरीका है. इससे किसी संसाधन के ऑरिजिन की पुष्टि की जा सकती है. भले ही, उसे किसी भी तरीके से डिलीवर किया गया हो.
यहां दिए गए निर्देशों में, वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज सेट अप करने का तरीका बताया गया है. खुद हस्ताक्षर किए गए और CanSignHttpExchanges सर्टिफ़िकेट, दोनों के लिए निर्देश शामिल हैं.
खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके SXG दिखाना
एसएक्सजी दिखाने के लिए, खुद के हस्ताक्षर वाले सर्टिफ़िकेट का इस्तेमाल मुख्य रूप से, प्रज़ेंटेशन और जांच के लिए किया जाता है. जिन SXG पर खुद के हस्ताक्षर वाले सर्टिफ़िकेट का इस्तेमाल किया गया है, उन्हें टेस्टिंग एनवायरमेंट के बाहर इस्तेमाल करने पर, ब्राउज़र में गड़बड़ी के मैसेज जनरेट होंगे. साथ ही, इन्हें क्रॉलर को नहीं दिखाया जाना चाहिए.
ज़रूरी शर्तें
इन निर्देशों का पालन करने के लिए, आपके डेवलपमेंट एनवायरमेंट में openssl और Go इंस्टॉल होना चाहिए.
खुद के हस्ताक्षर वाला सर्टिफ़िकेट जनरेट करना
इस सेक्शन में, अपने-आप हस्ताक्षर वाला सर्टिफ़िकेट जनरेट करने का तरीका बताया गया है. इसका इस्तेमाल, हस्ताक्षर किए गए एक्सचेंज के साथ किया जा सकता है.
निर्देश
निजी कुंजी जनरेट करें.
openssl ecparam -out priv.key -name prime256v1 -genkeyनिजी कुंजी को
priv.keyनाम की फ़ाइल के तौर पर सेव किया जाएगा.सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध (सीएसआर) बनाएं.
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध, कोड में बदले गए टेक्स्ट का एक ब्लॉक होता है. इसमें सर्टिफ़िकेट देने वाली संस्था(सीए) से सर्टिफ़िकेट का अनुरोध करने के लिए ज़रूरी जानकारी होती है. हालांकि, आपको सीए से सर्टिफ़िकेट का अनुरोध नहीं करना है, फिर भी सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध करना ज़रूरी है.
ऊपर दिया गया कमांड,
Web Packager Demoनाम के संगठन के लिए सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध बनाता है. इस संगठन का सामान्य नामexample.comहै. सामान्य नाम, उस साइट का पूरा डोमेन नेम होना चाहिए जिसमें वह कॉन्टेंट मौजूद है जिसे आपको SXG के तौर पर पैकेज करना है.प्रोडक्शन SXG सेटअप में, यह ऐसी साइट होगी जिसका मालिकाना हक आपके पास होगा. हालांकि, इन निर्देशों में बताए गए टेस्टिंग एनवायरमेंट में, यह कोई भी साइट हो सकती है.
ऐसा सर्टिफ़िकेट बनाएं जिसमें
CanSignHttpExchangesएक्सटेंशन हो.openssl x509 -req -days 90 -in cert.csr -signkey priv.key -out cert.pem -extfile <(echo -e "1.3.6.1.4.1.11129.2.1.22 = ASN1:NULL\nsubjectAltName=DNS:example.com")यह निर्देश, सर्टिफ़िकेट फ़ाइल
cert.pemबनाने के लिए, पहले और दूसरे चरण में बनाई गई निजी कुंजी और सीएसआर का इस्तेमाल करता है.-extfileफ़्लैग, सर्टिफ़िकेट कोCanSignHttpExchangesसर्टिफ़िकेट एक्सटेंशन से जोड़ता है.1.3.6.1.4.1.11129.2.1.22,CanSignHttpExchangesएक्सटेंशन के लिए ऑब्जेक्ट आइडेंटिफ़ायर होता है. इसके अलावा,-extfileफ़्लैग,example.comको विषय के लिए वैकल्पिक नाम के तौर पर भी तय करता है.अगर आपको
cert.pemके कॉन्टेंट के बारे में जानना है, तो इन कमांड का इस्तेमाल करके उन्हें देखा जा सकता है:openssl x509 -in cert.pem -noout -textनिजी पासकोड और सर्टिफ़िकेट बनाने का काम पूरा हो गया. अगले सेक्शन में, आपको
priv.keyऔरcert.pemफ़ाइलों की ज़रूरत पड़ेगी.
टेस्टिंग के लिए वेब पैकेज़र सर्वर सेट अप करना
ज़रूरी शर्तें
वेब पैकेजर इंस्टॉल करें.
git clone https://github.com/google/webpackager.gitबिल्ड
webpkgserver.cd webpackager/cmd/webpkgserver go build .webpkgserver, वेब पैकेजर प्रोजेक्ट में मौजूद एक खास बाइनरी है.पुष्टि करें कि
webpkgserverसही तरीके से इंस्टॉल किया गया हो../webpkgserver --helpइस कमांड से,
webpkgserverके इस्तेमाल के बारे में जानकारी मिलनी चाहिए. अगर यह तरीका काम नहीं करता है, तो समस्या हल करने के लिए सबसे पहले यह पुष्टि करें कि आपका GOPATH सही तरीके से कॉन्फ़िगर किया गया है.
निर्देश
webpkgserverडायरेक्ट्री पर जाएं. ऐसा हो सकता है कि आप पहले से ही इस डायरेक्ट्री में हों.cd /path/to/cmd/webpkgserverउदाहरण को कॉपी करके,
webpkgsever.tomlफ़ाइल बनाएं.cp ./webpkgserver.example.toml ./webpkgserver.tomlइस फ़ाइल में
webpkgserverके लिए कॉन्फ़िगरेशन के विकल्प मौजूद हैं.अपनी पसंद के एडिटर में
webpkgserver.tomlखोलें और ये बदलाव करें:- लाइन
#AllowTestCert = falseकोAllowTestCert = trueमें बदलें. - आपने जो PEM सर्टिफ़िकेट
cert.pemबनाया है उसका पाथ दिखाने के लिए, लाइनPEMFile = 'path/to/your.pem'में बदलाव करें.TLS.PEMFileके बारे में बताने वाली लाइन में बदलाव न करें—यह कॉन्फ़िगरेशन का एक अलग विकल्प है. - आपने जो निजी कुंजी
priv.keyबनाई है उसका पाथ दिखाने के लिए,KeyFile = 'priv.key'लाइन में बदलाव करें.TLS.KeyFileके बारे में बताने वाली लाइन को न बदलें—यह कॉन्फ़िगरेशन का एक अलग विकल्प है. - लाइन
#CertURLBase = '/webpkg/cert'कोCertURLBase = 'data:'में बदलें.CertURLBase, SXG सर्टिफ़िकेट की सेवा देने की जगह की जानकारी देता है. इस जानकारी का इस्तेमाल, SXG केSignatureहेडर मेंcert-urlपैरामीटर सेट करने के लिए किया जाता है. प्रोडक्शन एनवायरमेंट में,CertURLBaseका इस्तेमाल इस तरह किया जाता है:CertURLBase = 'https://mysite.com/'. हालांकि, स्थानीय जांच के लिए,CertURLBase = 'data:'का इस्तेमाल करकेwebpkgserverको निर्देश दिया जा सकता है कि वहcert-urlफ़ील्ड में सर्टिफ़िकेट को इनलाइन करने के लिए, डेटा यूआरएल का इस्तेमाल करे. स्थानीय टेस्टिंग के लिए, एसएक्सजी सर्टिफ़िकेट दिखाने का यह सबसे आसान तरीका है. Domain = 'example.org'लाइन में बदलाव करके, उस डोमेन को दिखाएं जिसके लिए आपने सर्टिफ़िकेट बनाया है. अगर आपने इस लेख में दिए गए निर्देशों का पूरी तरह से पालन किया है, तो यह स्टेटसexample.comमें बदल जाना चाहिए.webpkgserverसिर्फ़ उस डोमेन से कॉन्टेंट फ़ेच करेगा जिसेwebpkgserver.tomlसे दिखाया गया है. अगरwebpkgserver.tomlको अपडेट किए बिना किसी दूसरे डोमेन से पेज फ़ेच करने की कोशिश की जाती है, तोwebpkgserverलॉग में गड़बड़ी का मैसेजURL doesn't match the fetch targetsदिखेगा.
ज़रूरी नहीं
अगर आपको सब-रिसॉर्स को पहले से लोड करने की सुविधा चालू या बंद करनी है, तो
webpkgserver.tomlकॉन्फ़िगरेशन के ये विकल्प काम के हैं:webpkgserverको स्प्रेडशीट और स्क्रिप्ट सब-रिसॉर्स को एसएक्सजी के तौर पर प्रीलोड करने के लिए निर्देश डालने के लिए,#PreloadCSS = falseपंक्ति कोPreloadCSS = trueमें बदलें. इसके अलावा, लाइन#PreloadJS = falseकोPreloadJS = trueमें बदलें.इस कॉन्फ़िगरेशन विकल्प का इस्तेमाल करने के बजाय, किसी पेज के एचटीएमएल में मैन्युअल रूप से
Link: rel="preload"हेडर और<link rel="preload">टैग जोड़े जा सकते हैं.डिफ़ॉल्ट रूप से,
webpkgserverमौजूदा<link rel="preload">टैग को, उसी तरह के<link>टैग से बदल देता है जो इस कॉन्टेंट को SXG के तौर पर फ़ेच करने के लिए ज़रूरी हैं. ऐसा करने पर,webpkgserverज़रूरत के हिसाब सेallowed-alt-sxgऔरheader-integrityडायरेक्टिव सेट करेगा—एचटीएमएल लेखकों को इन्हें मैन्युअल तरीके से जोड़ने की ज़रूरत नहीं है. इस व्यवहार को बदलने और मौजूदा ऐसे प्रीलोड को बनाए रखने के लिए जो एसएक्सजी नहीं हैं,#KeepNonSXGPreloads (default = false)कोKeepNonSXGPreloads = trueमें बदलें. ध्यान रखें कि इस विकल्प को चालू करने पर, एसएक्सजी इन ज़रूरी शर्तों के मुताबिक, Google एसएक्सजी कैश मेमोरी का इस्तेमाल नहीं कर पाएगा.
- लाइन
webpkgserverशुरू करें../webpkgserverअगर सर्वर सही तरीके से शुरू हो गया है, तो आपको लॉग में ये मैसेज दिखेंगे:
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkgआपके लॉग मैसेज थोड़े अलग दिख सकते हैं. खास तौर पर,
webpkgserverसर्टिफ़िकेट को कैश मेमोरी में सेव करने के लिए जिस डायरेक्ट्री का इस्तेमाल करता है वह ऑपरेटिंग सिस्टम के हिसाब से अलग-अलग होती है.अगर आपको ये मैसेज नहीं दिखते हैं, तो समस्या हल करने का पहला चरण यह है कि
webpkgserver.tomlकी दोबारा जांच करें.webpkgserver.tomlको अपडेट करने के बाद, आपकोwebpkgserverको रीस्टार्ट करना होगा.इस कमांड का इस्तेमाल करके Chrome खोलें:
shell /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --user-data-dir=/tmp/udd \ --ignore-certificate-errors-spki-list=`openssl x509 -noout -pubkey -in cert.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64`यह निर्देश Chrome को
cert.pemसे जुड़े सर्टिफ़िकेट की गड़बड़ियों को अनदेखा करने का आदेश देता है. इससे, टेस्ट सर्टिफ़िकेट का इस्तेमाल करके SXG की जांच की जा सकती है. अगर Chrome को इस निर्देश के बिना लॉन्च किया जाता है, तो DevTools में एसएक्सजी की जांच करने पर, गड़बड़ीCertificate verification error: ERR_CERT_INVALIDदिखेगी.ध्यान दें:
आपको इस निर्देश में बदलाव करना पड़ सकता है, ताकि आपकी मशीन पर Chrome की जगह की जानकारी के साथ-साथ
cert.pemकी जगह की जानकारी भी दिखे. अगर आपने यह तरीका सही तरीके से अपनाया है, तो आपको पता बार के नीचे एक चेतावनी दिखेगी. चेतावनी कुछ ऐसी होनी चाहिए:You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.अगर चेतावनी में हैश स्ट्रिंग शामिल नहीं है, तो इसका मतलब है कि आपने SXG सर्टिफ़िकेट की जगह की जानकारी सही तरीके से नहीं दी है.
DevTools का नेटवर्क टैब खोलें. इसके बाद, यह यूआरएल खोलें:
http://localhost:8080/priv/doc/https://example.com.इससे,
http://localhost:8080पर चल रहेwebpackagerइंस्टेंस से,https://example.comका कॉन्टेंट शामिल करने वाले एसएक्सजी के लिए अनुरोध किया जाता है./priv/doc/, एपीआई का डिफ़ॉल्ट एंडपॉइंट है, जिसका इस्तेमालwebpackagerकरता है.
ये संसाधन, नेटवर्क टैब में मौजूद हैं:
signed-exchangeटाइप का रिसॉर्स. यह एसएक्सजी है.cert-chain+cborटाइप का रिसॉर्स. यह SXG सर्टिफ़िकेट है. एसएक्सजी सर्टिफ़िकेट के लिए,application/cert-chain+cborफ़ॉर्मैट का इस्तेमाल करना ज़रूरी है.documentटाइप का रिसॉर्स. यह वह कॉन्टेंट है जिसे SXG के ज़रिए डिलीवर किया गया है.
अगर आपको ये संसाधन नहीं दिखते हैं, तो ब्राउज़र का कैश मेमोरी मिटाएं. इसके बाद,
http://localhost:8080/priv/doc/https://example.comको फिर से लोड करें.हस्ताक्षर किए गए एक्सचेंज और उसके हस्ताक्षर के बारे में ज़्यादा जानकारी देखने के लिए, झलक टैब पर क्लिक करें.

CanSignHttpExchanges सर्टिफ़िकेट का इस्तेमाल करके, साइन किए गए एक्सचेंज दिखाना
इस सेक्शन में दिए गए निर्देशों में, CanSignHttpExchanges सर्टिफ़िकेट का इस्तेमाल करके SXG दिखाने का तरीका बताया गया है. SXG का प्रोडक्शन में इस्तेमाल करने के लिए,
CanSignHttpExchanges सर्टिफ़िकेट की ज़रूरत होती है.
कम शब्दों में बताने के लिए, ये निर्देश इस आधार पर लिखे गए हैं कि आपने साइन किए गए एक्सचेंज को सेट अप करने के लिए, खुद से हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करना सेक्शन में बताए गए कॉन्सेप्ट को समझ लिया है.
ज़रूरी शर्तें
आपके पास
CanSignHttpExchangesसर्टिफ़िकेट है. इस पेज पर, ऐसे सीए की सूची दी गई है जो इस तरह का सर्टिफ़िकेट देते हैं.अगर आपके पास सर्टिफ़िकेट नहीं है, तो अपने सीए से सर्टिफ़िकेट अपने-आप पाने के लिए, अपने webpkgserver को कॉन्फ़िगर किया जा सकता है.
webpkgserver.tomlमें क्या डालना है, इसके लिए इस पेज पर दिए गए निर्देशों का पालन करें.हालांकि, ऐसा करना ज़रूरी नहीं है, लेकिन हमारा सुझाव है कि आप
webpkgserverको एज सर्वर के पीछे चलाएं. अगर एज सर्वर का इस्तेमाल नहीं किया जा रहा है, तो आपकोwebpkgserver.tomlमेंTLS.PEMFileऔरTLS.KeyFileविकल्पों को कॉन्फ़िगर करना होगा. डिफ़ॉल्ट रूप से,webpkgserverएचटीटीपी पर चलता है. हालांकि, ब्राउज़र के लिए मान्य होने के लिए, SXG सर्टिफ़िकेट को एचटीटीपीएस पर दिखाया जाना चाहिए.TLS.PEMFileऔरTLS.KeyFileको कॉन्फ़िगर करने से,webpkgserverको एचटीटीपीएस का इस्तेमाल करने की अनुमति मिलती है. इसलिए, सीधे ब्राउज़र पर एसएक्सजी सर्टिफ़िकेट दिखाया जा सकता है.
निर्देश
अपनी साइट के SXG सर्टिफ़िकेट के बाद, अपनी साइट के सीए सर्टिफ़िकेट को जोड़कर, एक PEM फ़ाइल बनाएं. इस बारे में ज़्यादा निर्देश यहां देखे जा सकते हैं.
PEM एक ऐसा फ़ाइल फ़ॉर्मैट है जिसका इस्तेमाल आम तौर पर कई सर्टिफ़िकेट सेव करने के लिए, "कंटेनर" के तौर पर किया जाता है.
उदाहरण को कॉपी करके, एक नई
webpkgsever.tomlफ़ाइल बनाएं.cp ./webpkgserver.example.toml ./webpkgserver.tomlअपनी पसंद के एडिटर में
webpkgserver.tomlखोलें और ये बदलाव करें:PEMFile = cert.pemलाइन में बदलाव करके, उस पीईएम फ़ाइल की जगह दिखाएं जिसमें आपकी पूरी सर्टिफ़िकेट चेन शामिल है.- अपनी PEM फ़ाइल से जुड़ी निजी कुंजी की जगह दिखाने के लिए,
KeyFile = 'priv.key'लाइन बदलें. - अपनी साइट को दिखाने के लिए, लाइन
Domain = 'example.org'बदलें. - (ज़रूरी नहीं)
webpkgserverके SXG सर्टिफ़िकेट को हर 90 दिन (Google के लिए 45 दिन) में अपने-आप रिन्यू होने की सुविधा चालू करने के लिए,webpkgserver.tomlके[SXG.ACME]सेक्शन में जाकर विकल्पों को कॉन्फ़िगर करें. यह विकल्प सिर्फ़ उन साइटों पर लागू होता है जिनमें DigiCert या Google ACME खाता सेट अप किया गया हो.
अपने एज सर्वर को
webpkgserverइंस्टेंस पर ट्रैफ़िक फ़ॉरवर्ड करने के लिए कॉन्फ़िगर करें.webpkgserverदो तरह के मुख्य अनुरोधों को मैनेज करता है: एसएक्सजी के लिए अनुरोध (/priv/doc/एंडपॉइंट से दिखाए जाते हैं) और एसएक्सजी सर्टिफ़िकेट के लिए अनुरोध (/webpkg/cert/एंडपॉइंट से दिखाए जाते हैं). इनमें से हर तरह के अनुरोध के लिए, यूआरएल को फिर से लिखने के नियम थोड़े अलग होते हैं. ज़्यादा जानकारी के लिए, फ़्रंट-एंड एज सर्वर के पीछे चलना लेख पढ़ें.ध्यान दें:
डिफ़ॉल्ट रूप से,
webpkgserver,/webpkg/cert/$CERT_HASHपर एसएक्सजी सर्टिफ़िकेट दिखाता है. उदाहरण के लिए,/webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY.$CERT_HASHजनरेट करने के लिए, यह कमांड चलाएं:shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =