वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज (एसएक्सजी) उपलब्ध कराने का तरीका जानें.
साइन किया गया एक्सचेंज (एसएक्सजी) डिलीवरी का एक तरीका है जो इसे
संसाधन के मूल स्रोत की अलग से पुष्टि करना संभव हो सके, चाहे वह संसाधन कैसे उपलब्ध कराया गया हो.
यहां दिए गए निर्देशों में, साइन किए हुए एक्सचेंज को सेट अप करने का तरीका बताया गया है. इसके लिए,
वेब पैकेजर. इसके लिए निर्देश शामिल हैं
खुद हस्ताक्षर किए हुए और CanSignHttpExchanges
सर्टिफ़िकेट.
खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी उपलब्ध कराएं
एसएक्सजी दिखाने के लिए, खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल मुख्य रूप से इनके लिए किया जाता है को दिखाने और उसकी जांच करने के लिए किया जाता है. खुद हस्ताक्षर किए गए सर्टिफ़िकेट के साथ साइन किए गए एसएक्सजी टेस्टिंग के बाहर इस्तेमाल करने पर ब्राउज़र में गड़बड़ी के मैसेज जनरेट करेगा इन्हें क्रॉलर के साथ शेयर नहीं किया जाना चाहिए.
ज़रूरी शर्तें
इन निर्देशों का पालन करने के लिए, आपके पास openssl और अपने डेवलपमेंट एनवायरमेंट में Go इंस्टॉल करें.
खुद हस्ताक्षर किया हुआ सर्टिफ़िकेट जनरेट करें
इस सेक्शन में, खुद हस्ताक्षर किया हुआ सर्टिफ़िकेट जनरेट करने का तरीका बताया गया है. इसे साइन किए हुए एक्सचेंज के साथ इस्तेमाल किया जाता है.
निर्देश
निजी पासकोड जनरेट करें.
openssl ecparam -out priv.key -name prime256v1 -genkey
निजी कुंजी को
priv.key
नाम की फ़ाइल के तौर पर सेव किया जाएगा.सर्टिफ़िकेट पर हस्ताक्षर करना request (सीएसआर).
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध, कोड में बदले गए टेक्स्ट का एक ब्लॉक होता है. यह टेक्स्ट, सर्टिफ़िकेट अथॉरिटी(सीए) से सर्टिफ़िकेट का अनुरोध करने के लिए ज़रूरी जानकारी. हालांकि आप सीए, अब भी सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध करना ज़रूरी है.
ऊपर दिया गया निर्देश किसी संगठन के लिए, सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध बनाता है
Web Packager Demo
नाम में सामान्य nameexample.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")
यह निर्देश निजी कुंजी और चरण 1 और 2 में बनाए गए CSR का उपयोग करके सर्टिफ़िकेट फ़ाइल
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
में बदलें. - लाइन
PEMFile = 'path/to/your.pem'
को बदलकर इसका पाथ दिखाएं आपका बनाया हुआ PEM सर्टिफ़िकेट,cert.pem
. इसे न बदलें इस पंक्ति मेंTLS.PEMFile
लिखा है—यह कॉन्फ़िगरेशन का अलग विकल्प है. - पंक्ति
KeyFile = 'priv.key'
को बदलें ताकि निजी पासकोड,priv.key
, जो आपने बनाया है. लाइन न बदलेंTLS.KeyFile
का उल्लेख किया जा रहा है—यह कॉन्फ़िगरेशन का एक अलग विकल्प है. - लाइन को
#CertURLBase = '/webpkg/cert'
कोCertURLBase = 'data:'
में बदलें.CertURLBase
, एसएक्सजी को दिखाने की जगह के बारे में बताता है प्रमाणपत्र. इस जानकारी का इस्तेमाल,cert-url
पैरामीटर को सेट करने के लिए किया जाता है यहSignature
हेडर है. प्रोडक्शन एनवायरमेंट में,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 = true
के लिए#KeepNonSXGPreloads (default = false)
. ध्यान रखें कि इस विकल्प को चालू करने से एसएक्सजी को 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
.इससे, इस पर चल रहे
webpackager
इंस्टेंस को अनुरोध भेजा जाता है इस कॉन्टेंट वाले एसएक्सजी के लिएhttp://localhost:8080
https://example.com
./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
सर्टिफ़िकेट है. यह पेज उन CA की सूची बनाता है जो इस तरह का सर्टिफ़िकेट ऑफ़र करते हैं.अगर आपके पास सर्टिफ़िकेट नहीं है, तो अपने webpkgserver को आपके CA से सर्टिफ़िकेट अपने-आप फिर से पाएं. आप
webpkgserver.toml
में इस स्थिति में क्या होगा, इसके लिए दिशा-निर्देश पेज.हालांकि यह ज़रूरी नहीं है, लेकिन हमारा सुझाव है कि आप
webpkgserver
किसी एज सर्वर के पीछे है. अगर किसी एज सर्वर का इस्तेमाल नहीं किया जाता है, तो को इसमेंTLS.PEMFile
औरTLS.KeyFile
विकल्प कॉन्फ़िगर करने होंगेwebpkgserver.toml
. डिफ़ॉल्ट रूप से,webpkgserver
एचटीटीपी पर चलता है. हालांकि, एसएक्सजी ब्राउज़र, सर्टिफ़िकेट को मान्य मान सके, इसके लिए ज़रूरी है कि उसे एचटीटीपीएस पर दिखाया जाए.TLS.PEMFile
औरTLS.KeyFile
को कॉन्फ़िगर करने पर,webpkgserver
को इनका इस्तेमाल करने की अनुमति मिल जाती है एचटीटीपीएस का इस्तेमाल करके, एसएक्सजी सर्टिफ़िकेट सीधे ब्राउज़र पर भेजा जाता है.
निर्देश
अपनी साइट के एसएक्सजी सर्टिफ़िकेट को जोड़कर एक पीईएम फ़ाइल बनाएं. इसके बाद, सर्टिफ़िकेट मिला है. इस बारे में और निर्देश देखे जा सकते हैं यहां पढ़ें.
PEM है एक फ़ाइल प्रारूप जो आमतौर पर "कंटेनर" के रूप में उपयोग किया जाता है कई स्टोर करने के लिए सर्टिफ़िकेट.
उदाहरण को कॉपी करके, नई
webpkgsever.toml
फ़ाइल बनाएं.cp ./webpkgserver.example.toml ./webpkgserver.toml
अपनी पसंद के एडिटर के साथ
webpkgserver.toml
खोलें और ये बदलाव हुए हैं:- पीईएम की जगह दिखाने के लिए,
PEMFile = cert.pem
लाइन को बदलें ऐसी फ़ाइल जिसमें आपकी पूरी सर्टिफ़िकेट चेन है. - जगह दिखाने के लिए लाइन
KeyFile = 'priv.key'
बदलें PEM फ़ाइल के साथ संगत निजी कुंजी है. - अपनी साइट दिखाने के लिए लाइन
Domain = 'example.org'
बदलें. - (ज़रूरी नहीं)
webpkgserver
के एसएक्सजी सर्टिफ़िकेट को हर महीने अपने-आप रिन्यू करने के लिए 90 दिन (Google के लिए 45 दिन), इसके[SXG.ACME]
सेक्शन में विकल्पों को कॉन्फ़िगर करेंwebpkgserver.toml
. यह विकल्प सिर्फ़ DigiCert वाली साइटों पर लागू होता है या Google एसीएमई खाता सेटअप करें.
- पीईएम की जगह दिखाने के लिए,
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 =