वेब पैकेजर का इस्तेमाल करके साइन किए गए एक्सचेंज को सेट अप करने का तरीका

वेब पैकेजर का इस्तेमाल करके, साइन किए हुए एक्सचेंज (एसएक्सजी) दिखाने का तरीका जानें.

Katie Hempenius
Katie Hempenius

साइन किए गए एक्सचेंज (एसएक्सजी) का इस्तेमाल करके, किसी संसाधन के ऑरिजिन की पुष्टि की जा सकती है. इससे फ़र्क़ नहीं पड़ता कि वह कैसे डिलीवर किया गया था. नीचे दिए गए निर्देशों में वेब पैकेजर का इस्तेमाल करके, साइन किए हुए एक्सचेंज सेट अप करने का तरीका बताया गया है. खुद हस्ताक्षर किए गए सर्टिफ़िकेट और CanSignHttpExchanges सर्टिफ़िकेट, दोनों के लिए निर्देश शामिल हैं.

खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी उपलब्ध कराएं

एसएक्सजी उपलब्ध कराने के लिए, खुद से हस्ताक्षर किए जाने वाले सर्टिफ़िकेट का इस्तेमाल मुख्य रूप से डेमोंस्ट्रेशन और टेस्टिंग के लिए किया जाता है. खुद हस्ताक्षर किए गए सर्टिफ़िकेट से साइन किए गए एसएक्सजी, टेस्टिंग एनवायरमेंट के बाहर इस्तेमाल किए जाने पर ब्राउज़र में गड़बड़ी के मैसेज जनरेट करेंगे. साथ ही, उन्हें क्रॉलर को नहीं दिखाया जाना चाहिए.

ज़रूरी शर्तें

इन निर्देशों का पालन करने के लिए, आपको अपने डेवलपमेंट एनवायरमेंट में openssl और Go इंस्टॉल करना होगा.

खुद हस्ताक्षर किया हुआ सर्टिफ़िकेट जनरेट करें

इस सेक्शन में, खुद हस्ताक्षर किए गए सर्टिफ़िकेट को जनरेट करने का तरीका बताया गया है. इस सर्टिफ़िकेट को साइन किए गए एक्सचेंज के साथ इस्तेमाल किया जा सकता है.

निर्देश

  1. निजी कुंजी जनरेट करें.

    openssl ecparam -out priv.key -name prime256v1 -genkey
    

    निजी कुंजी को priv.key नाम की फ़ाइल के तौर पर सेव किया जाएगा.

  2. सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध (सीएसआर) बनाएं.

    openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
    

    सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध, कोड में बदले गए टेक्स्ट का एक ब्लॉक होता है. इससे पता चलता है कि सर्टिफ़िकेट बनाने वाली संस्था(सीए) से, सर्टिफ़िकेट पाने का अनुरोध करने के लिए ज़रूरी जानकारी क्या होती है. हालांकि, आपको किसी कैलिफ़ोर्निया से सर्टिफ़िकेट पाने का अनुरोध नहीं करना है. इसके बावजूद, सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध करना ज़रूरी है.

    ऊपर दिए गए निर्देश की मदद से, Web Packager Demo नाम वाले संगठन के लिए सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध बनाया जा सकता है. इसका सामान्य नाम example.com है. सामान्य नाम, उस साइट का पूरी तरह क्वालिफ़ाइड डोमेन नेम होना चाहिए जिसमें वह कॉन्टेंट शामिल हो जिसे आपको एसएक्सजी के तौर पर पैकेज करना है.

    प्रोडक्शन एसएक्सजी सेटअप में, यह एक ऐसी साइट होगी जिसका मालिकाना हक आपके पास होगा. हालांकि, अगर किसी टेस्टिंग एनवायरमेंट में इन निर्देशों में बताया गया है, तो यह कोई भी साइट हो सकती है.

  3. ऐसा सर्टिफ़िकेट बनाएं जिसमें 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 फ़ाइलों की ज़रूरत होगी.

टेस्टिंग के लिए वेब पैकेजर सर्वर सेट अप करें

ज़रूरी शर्तें

  1. वेब पैकेजर इंस्टॉल करें.

    git clone https://github.com/google/webpackager.git
    
  2. बिल्ड webpkgserver.

    cd webpackager/cmd/webpkgserver
    go build .
    

    webpkgserver, वेब पैकेजर प्रोजेक्ट में एक खास बाइनरी है.

  3. पुष्टि करें कि webpkgserver सही तरीके से इंस्टॉल किया गया है.

    ./webpkgserver --help
    

    इस निर्देश से webpkgserver के इस्तेमाल के बारे में जानकारी मिलनी चाहिए. अगर यह काम नहीं करता है, तो समस्या हल करने का पहला अच्छा तरीका यह पुष्टि करना है कि आपका GOPATH सही तरीके से कॉन्फ़िगर किया गया है.

निर्देश

  1. webpkgserver डायरेक्ट्री पर जाएं (हो सकता है कि आप पहले से ही इस डायरेक्ट्री में हों).

    cd /path/to/cmd/webpkgserver
    
  2. उदाहरण को कॉपी करके, webpkgsever.toml फ़ाइल बनाएं.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    

    इस फ़ाइल में webpkgserver के लिए कॉन्फ़िगरेशन विकल्प शामिल हैं.

  3. 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 एसएक्सजी कैश मेमोरी के लिए इस्तेमाल न किया जा सके.

  4. 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 को रीस्टार्ट करना होगा.

  5. नीचे दिए गए निर्देश का इस्तेमाल करके 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=.

    अगर चेतावनी में हैश स्ट्रिंग शामिल नहीं है, तो इसका मतलब है कि आपने एसएक्सजी सर्टिफ़िकेट की जगह की जानकारी सही तरीके से नहीं दी है.

  6. DevTools नेटवर्क टैब खोलें. इसके बाद, इस यूआरएल पर जाएं: http://localhost:8080/priv/doc/https://example.com.

    इससे, https://example.com के कॉन्टेंट वाले एसएक्सजी के लिए, http://localhost:8080 पर चल रहे webpackager इंस्टेंस को अनुरोध भेजा जाता है. /priv/doc/, डिफ़ॉल्ट एपीआई एंडपॉइंट है, इसका इस्तेमाल webpackager करता है.

    DevTools नेटवर्क टैब का स्क्रीनशॉट, जिसमें एसएक्सजी और उसका सर्टिफ़िकेट दिख रहा है.

    नेटवर्क टैब में ये संसाधन उपलब्ध हैं:

    • signed-exchange टाइप वाला संसाधन. यह एसएक्सजी है.
    • cert-chain+cbor टाइप वाला संसाधन. यह एसएक्सजी सर्टिफ़िकेट है. एसएक्सजी सर्टिफ़िकेट, application/cert-chain+cbor फ़ॉर्मैट का इस्तेमाल करना चाहिए.
    • document टाइप वाला संसाधन. यह वह कॉन्टेंट है जिसे एसएक्सजी के ज़रिए डिलीवर किया गया है.

    अगर आपको ये रिसॉर्स नहीं दिखते, तो ब्राउज़र की कैश मेमोरी मिटाएं और http://localhost:8080/priv/doc/https://example.com को फिर से लोड करें.

    साइन किए हुए एक्सचेंज और उसके हस्ताक्षर के बारे में ज़्यादा जानकारी देखने के लिए, झलक टैब पर क्लिक करें.

    &#39;झलक देखें&#39; टैब का स्क्रीनशॉट, जिसमें एसएक्सजी दिखाया गया है

CanSignHttpExchanges सर्टिफ़िकेट का इस्तेमाल करके, साइन किए हुए एक्सचेंज दिखाएं

इस सेक्शन में दिए गए निर्देशों में, CanSignHttpExchanges सर्टिफ़िकेट का इस्तेमाल करके, एसएक्सजी उपलब्ध कराने का तरीका बताया गया है. एसएक्सजी के प्रोडक्शन इस्तेमाल के लिए, CanSignHttpExchanges सर्टिफ़िकेट ज़रूरी है.

कम शब्दों में जानकारी देने के लिए, इन निर्देशों को यह मानकर लिखा गया है कि आपने खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके साइन किए हुए एक्सचेंज सेट अप करना सेक्शन में बताए गए सिद्धांतों को समझ लिया है.

ज़रूरी शर्तें

  • आपके पास CanSignHttpExchanges सर्टिफ़िकेट है. इस पेज पर इस तरह के सर्टिफ़िकेट देने वाले सीए की सूची होती है.

  • अगर आपके पास सर्टिफ़िकेट नहीं है, तो अपने webpkgserver को इस तरह कॉन्फ़िगर किया जा सकता है कि वह आपके CA से सर्टिफ़िकेट अपने-आप वापस पा सके. webpkgserver.toml में बताए गए निर्देशों के लिए, इस पेज पर जाएं.

  • हालांकि, यह ज़रूरी नहीं है, फिर भी हमारा सुझाव है कि आप webpkgserver को किसी किनारे वाले सर्वर के पीछे चलाएं. अगर किसी एज सर्वर का इस्तेमाल नहीं किया जाता है, तो आपको webpkgserver.toml में TLS.PEMFile और TLS.KeyFile विकल्पों को कॉन्फ़िगर करना होगा. डिफ़ॉल्ट रूप से, webpkgserver एचटीटीपी पर चलता है. हालांकि, एसएक्सजी सर्टिफ़िकेट को एचटीटीपीएस पर दिखाया जाना ज़रूरी है, ताकि ब्राउज़र ऐसा कर सके. TLS.PEMFile और TLS.KeyFile को कॉन्फ़िगर करने से, webpkgserver एचटीटीपीएस का इस्तेमाल कर पाएगा. इसलिए, यह एसएक्सजी सर्टिफ़िकेट सीधे ब्राउज़र पर उपलब्ध कराएगा.

निर्देश

  1. अपनी साइट के एसएक्सजी सर्टिफ़िकेट के बाद अपनी साइट का CA सर्टिफ़िकेट जोड़कर, एक PEM फ़ाइल बनाएं. इस बारे में ज़्यादा निर्देश यहां मिल सकते हैं.

    PEM एक ऐसा फ़ाइल फ़ॉर्मैट है जिसका इस्तेमाल आम तौर पर, एक से ज़्यादा सर्टिफ़िकेट को सेव करने के लिए, "कंटेनर" के तौर पर किया जाता है.

  2. उदाहरण को कॉपी करके, एक नई webpkgsever.toml फ़ाइल बनाएं.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    
  3. webpkgserver.toml को अपनी पसंद के एडिटर में खोलें और ये बदलाव करें:

    • अपनी पूरी सर्टिफ़िकेट चेन वाली PEM फ़ाइल की जगह दिखाने के लिए, लाइन PEMFile = cert.pem को बदलें.
    • अपनी PEM फ़ाइल से जुड़ी निजी कुंजी की जगह दिखाने के लिए, लाइन KeyFile = 'priv.key' को बदलें.
    • अपनी साइट दिखाने के लिए Domain = 'example.org' लाइन को बदलें.
    • (ज़रूरी नहीं) webpkgserver के एसएक्सजी सर्टिफ़िकेट को हर 90 दिन (Google के लिए 45 दिन) में अपने-आप रिन्यू करने के लिए, webpkgserver.toml के [SXG.ACME] सेक्शन में विकल्प कॉन्फ़िगर करें. यह विकल्प सिर्फ़ उन साइटों पर लागू होता है जिन्होंने DigiCert या Google का एसीएमई खाता सेटअप किया है.
  4. ट्रैफ़िक को 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 =