वेब पैकेजर का इस्तेमाल करके, साइन किए हुए एक्सचेंज (एसएक्सजी) दिखाने का तरीका जानें.
साइन किए गए एक्सचेंज (एसएक्सजी) का इस्तेमाल करके, किसी संसाधन के ऑरिजिन की पुष्टि की जा सकती है. इससे फ़र्क़ नहीं पड़ता कि वह कैसे डिलीवर किया गया था.
नीचे दिए गए निर्देशों में वेब पैकेजर का इस्तेमाल करके, साइन किए हुए एक्सचेंज सेट अप करने का तरीका बताया गया है. खुद हस्ताक्षर किए गए सर्टिफ़िकेट और CanSignHttpExchanges
सर्टिफ़िकेट, दोनों के लिए निर्देश शामिल हैं.
खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी उपलब्ध कराएं
एसएक्सजी उपलब्ध कराने के लिए, खुद से हस्ताक्षर किए जाने वाले सर्टिफ़िकेट का इस्तेमाल मुख्य रूप से डेमोंस्ट्रेशन और टेस्टिंग के लिए किया जाता है. खुद हस्ताक्षर किए गए सर्टिफ़िकेट से साइन किए गए एसएक्सजी, टेस्टिंग एनवायरमेंट के बाहर इस्तेमाल किए जाने पर ब्राउज़र में गड़बड़ी के मैसेज जनरेट करेंगे. साथ ही, उन्हें क्रॉलर को नहीं दिखाया जाना चाहिए.
ज़रूरी शर्तें
इन निर्देशों का पालन करने के लिए, आपको अपने डेवलपमेंट एनवायरमेंट में 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
है. सामान्य नाम, उस साइट का पूरी तरह क्वालिफ़ाइड डोमेन नेम होना चाहिए जिसमें वह कॉन्टेंट शामिल हो जिसे आपको एसएक्सजी के तौर पर पैकेज करना है.प्रोडक्शन एसएक्सजी सेटअप में, यह एक ऐसी साइट होगी जिसका मालिकाना हक आपके पास होगा. हालांकि, अगर किसी टेस्टिंग एनवायरमेंट में इन निर्देशों में बताया गया है, तो यह कोई भी साइट हो सकती है.
ऐसा सर्टिफ़िकेट बनाएं जिसमें
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
से एसएक्सजी सर्टिफ़िकेट दिखाने की जगह की जानकारी मिलती है. इस जानकारी का इस्तेमाल, एसएक्सजी के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>
टैग से बदल देता है, जो इस कॉन्टेंट को एसएक्सजी के तौर पर फ़ेच करने के लिए ज़रूरी होता है. ऐसा करने पर,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
से जुड़ी सर्टिफ़िकेट की गड़बड़ियों को अनदेखा करे. इसकी मदद से, टेस्ट सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी को टेस्ट किया जा सकता है. अगर 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=.
अगर चेतावनी में हैश स्ट्रिंग शामिल नहीं है, तो इसका मतलब है कि आपने एसएक्सजी सर्टिफ़िकेट की जगह की जानकारी सही तरीके से नहीं दी है.
DevTools नेटवर्क टैब खोलें. इसके बाद, इस यूआरएल पर जाएं:
http://localhost:8080/priv/doc/https://example.com
.इससे,
https://example.com
के कॉन्टेंट वाले एसएक्सजी के लिए,http://localhost:8080
पर चल रहेwebpackager
इंस्टेंस को अनुरोध भेजा जाता है./priv/doc/
, डिफ़ॉल्ट एपीआई एंडपॉइंट है, इसका इस्तेमालwebpackager
करता है.नेटवर्क टैब में ये संसाधन उपलब्ध हैं:
signed-exchange
टाइप वाला संसाधन. यह एसएक्सजी है.cert-chain+cbor
टाइप वाला संसाधन. यह एसएक्सजी सर्टिफ़िकेट है. एसएक्सजी सर्टिफ़िकेट,application/cert-chain+cbor
फ़ॉर्मैट का इस्तेमाल करना चाहिए.document
टाइप वाला संसाधन. यह वह कॉन्टेंट है जिसे एसएक्सजी के ज़रिए डिलीवर किया गया है.
अगर आपको ये रिसॉर्स नहीं दिखते, तो ब्राउज़र की कैश मेमोरी मिटाएं और
http://localhost:8080/priv/doc/https://example.com
को फिर से लोड करें.साइन किए हुए एक्सचेंज और उसके हस्ताक्षर के बारे में ज़्यादा जानकारी देखने के लिए, झलक टैब पर क्लिक करें.
CanSignHttpExchanges
सर्टिफ़िकेट का इस्तेमाल करके, साइन किए हुए एक्सचेंज दिखाएं
इस सेक्शन में दिए गए निर्देशों में, CanSignHttpExchanges
सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी उपलब्ध कराने का तरीका बताया गया है. एसएक्सजी के प्रोडक्शन इस्तेमाल के लिए,
CanSignHttpExchanges
सर्टिफ़िकेट ज़रूरी है.
कम शब्दों में जानकारी देने के लिए, इन निर्देशों को यह मानकर लिखा गया है कि आपने खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके साइन किए हुए एक्सचेंज सेट अप करना सेक्शन में बताए गए सिद्धांतों को समझ लिया है.
ज़रूरी शर्तें
आपके पास
CanSignHttpExchanges
सर्टिफ़िकेट है. इस पेज पर इस तरह के सर्टिफ़िकेट देने वाले सीए की सूची होती है.अगर आपके पास सर्टिफ़िकेट नहीं है, तो अपने webpkgserver को इस तरह कॉन्फ़िगर किया जा सकता है कि वह आपके CA से सर्टिफ़िकेट अपने-आप वापस पा सके.
webpkgserver.toml
में बताए गए निर्देशों के लिए, इस पेज पर जाएं.हालांकि, यह ज़रूरी नहीं है, फिर भी हमारा सुझाव है कि आप
webpkgserver
को किसी किनारे वाले सर्वर के पीछे चलाएं. अगर किसी एज सर्वर का इस्तेमाल नहीं किया जाता है, तो आपकोwebpkgserver.toml
मेंTLS.PEMFile
औरTLS.KeyFile
विकल्पों को कॉन्फ़िगर करना होगा. डिफ़ॉल्ट रूप से,webpkgserver
एचटीटीपी पर चलता है. हालांकि, एसएक्सजी सर्टिफ़िकेट को एचटीटीपीएस पर दिखाया जाना ज़रूरी है, ताकि ब्राउज़र ऐसा कर सके.TLS.PEMFile
औरTLS.KeyFile
को कॉन्फ़िगर करने से,webpkgserver
एचटीटीपीएस का इस्तेमाल कर पाएगा. इसलिए, यह एसएक्सजी सर्टिफ़िकेट सीधे ब्राउज़र पर उपलब्ध कराएगा.
निर्देश
अपनी साइट के एसएक्सजी सर्टिफ़िकेट के बाद अपनी साइट का CA सर्टिफ़िकेट जोड़कर, एक PEM फ़ाइल बनाएं. इस बारे में ज़्यादा निर्देश यहां मिल सकते हैं.
PEM एक ऐसा फ़ाइल फ़ॉर्मैट है जिसका इस्तेमाल आम तौर पर, एक से ज़्यादा सर्टिफ़िकेट को सेव करने के लिए, "कंटेनर" के तौर पर किया जाता है.
उदाहरण को कॉपी करके, एक नई
webpkgsever.toml
फ़ाइल बनाएं.cp ./webpkgserver.example.toml ./webpkgserver.toml
webpkgserver.toml
को अपनी पसंद के एडिटर में खोलें और ये बदलाव करें:- अपनी पूरी सर्टिफ़िकेट चेन वाली PEM फ़ाइल की जगह दिखाने के लिए, लाइन
PEMFile = cert.pem
को बदलें. - अपनी PEM फ़ाइल से जुड़ी निजी कुंजी की
जगह दिखाने के लिए, लाइन
KeyFile = 'priv.key'
को बदलें. - अपनी साइट दिखाने के लिए
Domain = 'example.org'
लाइन को बदलें. - (ज़रूरी नहीं)
webpkgserver
के एसएक्सजी सर्टिफ़िकेट को हर 90 दिन (Google के लिए 45 दिन) में अपने-आप रिन्यू करने के लिए,webpkgserver.toml
के[SXG.ACME]
सेक्शन में विकल्प कॉन्फ़िगर करें. यह विकल्प सिर्फ़ उन साइटों पर लागू होता है जिन्होंने DigiCert या Google का एसीएमई खाता सेटअप किया है.
- अपनी पूरी सर्टिफ़िकेट चेन वाली PEM फ़ाइल की जगह दिखाने के लिए, लाइन
ट्रैफ़िक को
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 =