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

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

Katie Hempenius
Katie Hempenius

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

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

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

इन निर्देशों का पालन करने के लिए, आपको अपने डेवलपमेंट एनवायरमेंट में 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 है. सामान्य नाम, उस साइट का पूरा डोमेन नेम होना चाहिए जिसमें वह कॉन्टेंट मौजूद है जिसे आपको SXG के तौर पर पैकेज करना है.

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

  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, 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 एसएक्सजी कैश मेमोरी का इस्तेमाल नहीं कर पाएगा.

  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 से जुड़े सर्टिफ़िकेट की गड़बड़ियों को अनदेखा करने का आदेश देता है. इससे, टेस्ट सर्टिफ़िकेट का इस्तेमाल करके 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 सर्टिफ़िकेट की जगह की जानकारी सही तरीके से नहीं दी है.

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

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

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

    ये संसाधन, नेटवर्क टैब में मौजूद हैं:

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

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

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

    SXG दिखाने वाले झलक टैब का स्क्रीनशॉट

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

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

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

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

  • आपके पास CanSignHttpExchanges सर्टिफ़िकेट है. इस पेज पर, ऐसे सीए की सूची दी गई है जो इस तरह का सर्टिफ़िकेट देते हैं.

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

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

निर्देश

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

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

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

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

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