ওয়েব প্যাকেজার ব্যবহার করে সাইনড এক্সচেঞ্জ কিভাবে সেট আপ করবেন

ওয়েব প্যাকেজার ব্যবহার করে সাইনড এক্সচেঞ্জ (SXGs) কীভাবে পরিবেশন করবেন তা শিখুন।

কেটি হেমপেনিয়াস
Katie Hempenius

একটি স্বাক্ষরিত বিনিময় (SXG) হল একটি ডেলিভারি মেকানিজম যা এটি কীভাবে বিতরণ করা হয়েছিল তার থেকে স্বাধীনভাবে একটি সম্পদের উত্স প্রমাণীকরণ করা সম্ভব করে। নিম্নলিখিত নির্দেশাবলী ব্যাখ্যা করে কিভাবে Web Packager ব্যবহার করে সাইনড এক্সচেঞ্জ সেট আপ করতে হয়। স্ব-স্বাক্ষরিত এবং CanSignHttpExchanges শংসাপত্র উভয়ের জন্য নির্দেশাবলী অন্তর্ভুক্ত করা হয়েছে।

SXGs পরিবেশন করার জন্য একটি স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করা প্রাথমিকভাবে প্রদর্শন এবং পরীক্ষার উদ্দেশ্যে ব্যবহৃত হয়। একটি স্ব-স্বাক্ষরিত শংসাপত্রের সাথে স্বাক্ষরিত SXGগুলি পরীক্ষার পরিবেশের বাইরে ব্যবহার করা হলে ব্রাউজারে ত্রুটি বার্তা তৈরি করবে এবং ক্রলারদের পরিবেশন করা উচিত নয়৷

পূর্বশর্ত

এই নির্দেশাবলী অনুসরণ করার জন্য আপনাকে আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে openssl এবং Go ইনস্টল করতে হবে।

একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করুন

এই বিভাগটি ব্যাখ্যা করে যে কীভাবে একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করতে হয় যা স্বাক্ষরিত এক্সচেঞ্জের সাথে ব্যবহার করা যেতে পারে।

নির্দেশনা

  1. একটি ব্যক্তিগত কী তৈরি করুন।

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

    প্রাইভেট কী priv.key নামের একটি ফাইল হিসাবে সংরক্ষণ করা হবে।

  2. একটি শংসাপত্র স্বাক্ষর অনুরোধ (CSR) তৈরি করুন।

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

    একটি শংসাপত্র স্বাক্ষরের অনুরোধ হল এনকোড করা পাঠ্যের একটি ব্লক যা একটি শংসাপত্র কর্তৃপক্ষ (CA) থেকে একটি শংসাপত্রের অনুরোধ করার জন্য প্রয়োজনীয় তথ্য প্রকাশ করে৷ যদিও আপনি একটি CA থেকে একটি শংসাপত্রের জন্য অনুরোধ করবেন না, তবুও একটি শংসাপত্র স্বাক্ষর করার অনুরোধ তৈরি করা প্রয়োজন৷

    উপরের কমান্ডটি 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 সার্টিফিকেট ফাইল তৈরি করতে 1 এবং 2 ধাপে তৈরি ব্যক্তিগত কী এবং CSR ব্যবহার করে। -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 ক্ষেত্রে সার্টিফিকেট ইনলাইন করার জন্য একটি ডেটা URL ব্যবহার করার নির্দেশ দিতে। স্থানীয় পরীক্ষার জন্য, এটি SXG সার্টিফিকেট পরিবেশন করার সবচেয়ে সুবিধাজনক উপায়।
    • আপনি যে ডোমেনের জন্য একটি শংসাপত্র তৈরি করেছেন সেটি প্রতিফলিত করতে Domain = 'example.org' লাইনটি পরিবর্তন করুন। আপনি যদি এই নিবন্ধের নির্দেশাবলী মৌখিকভাবে অনুসরণ করেন, তাহলে এটি example.com এ পরিবর্তন করা উচিত। webpkgserver শুধুমাত্র webpkgserver.toml দ্বারা নির্দেশিত ডোমেন থেকে সামগ্রী আনবে। যদি আপনি webpkgserver.toml আপডেট না করে একটি ভিন্ন ডোমেন থেকে পৃষ্ঠাগুলি আনার চেষ্টা করেন, তাহলে webpkgserver লগগুলি দেখাবে ত্রুটি বার্তা URL doesn't match the fetch targets

    ঐচ্ছিক

    আপনি যদি সাবরিসোর্স প্রিলোডিং সক্ষম বা নিষ্ক্রিয় করতে চান, নিম্নলিখিত webpkgserver.toml কনফিগারেশন বিকল্পগুলি প্রাসঙ্গিক:

    • স্টাইলশীট এবং স্ক্রিপ্ট সাবরিসোর্সগুলিকে SXG হিসাবে প্রিলোড করার জন্য webpkgserver ইনসার্ট নির্দেশিকা পেতে, #PreloadCSS = false কে PreloadCSS = true পরিবর্তন করুন। উপরন্তু, লাইন #PreloadJS = false পরিবর্তন করে PreloadJS = true করুন।

      এই কনফিগারেশন বিকল্পটি ব্যবহার করার বিকল্প হিসাবে, আপনি ম্যানুয়ালি Link: rel="preload" শিরোনাম এবং <link rel="preload"> ট্যাগগুলি একটি পৃষ্ঠার HTML-এ৷

    • ডিফল্টরূপে, webpkgserver বিদ্যমান <link rel="preload"> ট্যাগগুলিকে SXG হিসাবে এই সামগ্রী আনার জন্য প্রয়োজনীয় সমতুল্য <link> ট্যাগগুলির সাথে প্রতিস্থাপন করে৷ এটি করার সময়, webpkgserver প্রয়োজন অনুযায়ী allowed-alt-sxg এবং header-integrity নির্দেশাবলী সেট করবে—এইচটিএমএল লেখকদের হাতে এগুলি যোগ করার দরকার নেই। এই আচরণটি ওভাররাইড করতে এবং বিদ্যমান নন-SXG প্রিলোডগুলিকে রাখতে, #KeepNonSXGPreloads (default = false) KeepNonSXGPreloads = true এ পরিবর্তন করুন। মনে রাখবেন যে এই বিকল্পটি সক্ষম করলে SXG এই প্রয়োজনীয়তা অনুসারে Google SXG ক্যাশের জন্য অযোগ্য হয়ে উঠতে পারে।

  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. নিম্নলিখিত কমান্ড ব্যবহার করে ক্রোম চালু করুন: 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`

    এই কমান্ডটি cert.pem এর সাথে সম্পর্কিত শংসাপত্রের ত্রুটিগুলি উপেক্ষা করার জন্য Chrome-কে নির্দেশ দেয়৷ এটি একটি পরীক্ষার শংসাপত্র ব্যবহার করে SXG পরীক্ষা করা সম্ভব করে তোলে। এই কমান্ড ছাড়াই যদি Chrome চালু করা হয়, তাহলে DevTools-এ SXG পরিদর্শন করলে 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 নেটওয়ার্ক ট্যাব খুলুন, তারপর নিম্নলিখিত URL-এ যান: http://localhost:8080/priv/doc/https://example.com

    এটি https: https://example.com এর বিষয়বস্তু সমন্বিত একটি SXG-এর জন্য http://localhost:8080 এ চলমান webpackager ইন্সট্যান্সকে অনুরোধ করে। /priv/doc/ হল webpackager দ্বারা ব্যবহৃত ডিফল্ট API এন্ডপয়েন্ট।

    DevTools নেটওয়ার্ক ট্যাবের স্ক্রিনশট একটি SXG এবং এর শংসাপত্র দেখাচ্ছে৷

    নিম্নলিখিত সংস্থানগুলি নেটওয়ার্ক ট্যাবে তালিকাভুক্ত করা হয়েছে:

    • signed-exchange ধরন সহ একটি সংস্থান। এই SXG.
    • cert-chain+cbor টাইপ সহ একটি সংস্থান। এই SXG সার্টিফিকেট. SXG সার্টিফিকেট অবশ্যই application/cert-chain+cbor ফর্ম্যাট ব্যবহার করবে।
    • টাইপ document সহ একটি সম্পদ। এটি সেই সামগ্রী যা SXG এর মাধ্যমে বিতরণ করা হয়েছে৷

    আপনি যদি এই সংস্থানগুলি দেখতে না পান তবে ব্রাউজার ক্যাশে সাফ করার চেষ্টা করুন, তারপর http://localhost:8080/priv/doc/https://example.com পুনরায় লোড করুন।

    স্বাক্ষরিত এক্সচেঞ্জ এবং এর স্বাক্ষর সম্পর্কে আরও তথ্য দেখতে পূর্বরূপ ট্যাবে ক্লিক করুন।

    প্রিভিউ ট্যাবের স্ক্রিনশট একটি SXG দেখাচ্ছে

একটি CanSignHttpExchanges শংসাপত্র ব্যবহার করে স্বাক্ষরিত এক্সচেঞ্জ পরিবেশন করুন

এই বিভাগে নির্দেশাবলী ব্যাখ্যা করে যে কিভাবে একটি CanSignHttpExchanges শংসাপত্র ব্যবহার করে SXG গুলি পরিবেশন করা যায়। SXG-এর উৎপাদন ব্যবহারের জন্য একটি CanSignHttpExchanges শংসাপত্র প্রয়োজন।

সংক্ষিপ্ততার খাতিরে, এই নির্দেশাবলী এই অনুমানে লেখা হয়েছে যে আপনি একটি স্ব-স্বাক্ষরিত শংসাপত্র বিভাগ ব্যবহার করে সেটআপ স্বাক্ষরিত এক্সচেঞ্জে আলোচিত ধারণাগুলি বোঝেন৷

পূর্বশর্ত

  • আপনার একটি CanSignHttpExchanges শংসাপত্র আছে। এই পৃষ্ঠায় CA-এর তালিকা রয়েছে যারা এই ধরনের শংসাপত্র অফার করে।

  • আপনার যদি কোনো শংসাপত্র না থাকে, তাহলে আপনি আপনার CA থেকে স্বয়ংক্রিয়ভাবে শংসাপত্র পুনরুদ্ধার করতে আপনার webpkgserver কনফিগার করতে পারেন। আপনি এই পৃষ্ঠায় webpkgserver.toml এ যা যায় তার জন্য নির্দেশাবলী অনুসরণ করতে পারেন।

  • যদিও এটি একটি প্রয়োজনীয়তা নয়, এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি একটি প্রান্ত সার্ভারের পিছনে webpkgserver চালান৷ আপনি যদি এজ সার্ভার ব্যবহার না করেন, তাহলে আপনাকে webpkgserver.tomlTLS.PEMFile এবং TLS.KeyFile বিকল্পগুলি কনফিগার করতে হবে। ডিফল্টরূপে, webpkgserver HTTP এর উপর চলে। যাইহোক, ব্রাউজার দ্বারা বৈধ বলে বিবেচিত হওয়ার জন্য SXG শংসাপত্রগুলি HTTPS-এর মাধ্যমে পরিবেশন করা আবশ্যক৷ TLS.PEMFile এবং TLS.KeyFile কনফিগার করা webpkgserver HTTPS ব্যবহার করতে দেয় এবং তাই ব্রাউজারে সরাসরি SXG সার্টিফিকেট পরিবেশন করে।

নির্দেশনা

  1. আপনার সাইটের SXG শংসাপত্র এবং আপনার সাইটের 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 দিন) SXG সার্টিফিকেট স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করতে, webpkgserver.toml এর [SXG.ACME] বিভাগে বিকল্পগুলি কনফিগার করুন। এই বিকল্পটি শুধুমাত্র একটি DigiCert বা Google ACME অ্যাকাউন্ট সেটআপ সহ সাইটগুলিতে প্রযোজ্য৷
  4. webpkgserver ইনস্ট্যান্সে ট্রাফিক ফরোয়ার্ড করতে আপনার প্রান্ত সার্ভার কনফিগার করুন।

    webpkgserver দ্বারা পরিচালিত দুটি প্রাথমিক ধরনের অনুরোধ রয়েছে: SXG-এর জন্য অনুরোধ (যা /priv/doc/ এন্ডপয়েন্ট দ্বারা পরিবেশিত হয়) এবং SXG শংসাপত্রের জন্য অনুরোধ (যা /webpkg/cert/ এন্ডপয়েন্ট দ্বারা পরিবেশিত হয়)। এই ধরনের প্রতিটি অনুরোধের জন্য URL পুনর্লিখনের নিয়মগুলি সামান্য পরিবর্তিত হয়। আরও তথ্যের জন্য, ফ্রন্ট এন্ড এজ সার্ভারের পিছনে রানিং দেখুন।

    দ্রষ্টব্য:

    ডিফল্টরূপে, webpkgserver /webpkg/cert/$CERT_HASH এ SXG শংসাপত্র পরিবেশন করে —উদাহরণস্বরূপ, /webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY$CERT_HASH তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান: shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =