वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज (एसएक्सजी) दिखाने का तरीका जानें.
साइन किया गया एक्सचेंज (एसएक्सजी), डिलीवरी का एक तरीका है. इससे किसी संसाधन के ऑरिजिन की पुष्टि की जा सकती है. भले ही, उसे किसी भी तरीके से डिलीवर किया गया हो.
यहां दिए गए निर्देशों में, वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज सेट अप करने का तरीका बताया गया है. खुद हस्ताक्षर किए गए और 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 दिखाने का तरीका बताया गया है. SXGs को प्रोडक्शन में इस्तेमाल करने के लिए,
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 =