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

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

Katie Hempenius
Katie Hempenius

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

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

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

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

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

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

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

निर्देश

  1. निजी पासकोड जनरेट करें.

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

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

  2. सर्टिफ़िकेट पर हस्ताक्षर करना request (सीएसआर).

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

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

    ऊपर दिया गया निर्देश किसी संगठन के लिए, सर्टिफ़िकेट पर हस्ताक्षर करने का अनुरोध बनाता है Web Packager Demo नाम में सामान्य name 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")
    

    यह निर्देश निजी कुंजी और चरण 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 फ़ाइलें.

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

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

  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 में बदलें.
    • लाइन 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 एसएक्सजी कैश मेमोरी में सेव किया गया डेटा ज़रूरी शर्तें.

  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.

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

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

    नीचे दिए गए संसाधन नेटवर्क टैब में मौजूद हैं:

    • 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 को इनका इस्तेमाल करने की अनुमति मिल जाती है एचटीटीपीएस का इस्तेमाल करके, एसएक्सजी सर्टिफ़िकेट सीधे ब्राउज़र पर भेजा जाता है.

निर्देश

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

    PEM है एक फ़ाइल प्रारूप जो आमतौर पर "कंटेनर" के रूप में उपयोग किया जाता है कई स्टोर करने के लिए सर्टिफ़िकेट.

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

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

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