كيفية إعداد Signed Exchange باستخدام Web Packager

تعرَّف على كيفية عرض Signed Exchange (SXG) باستخدام Web Packager.

Katie Hempenius
Katie Hempenius

Signed Exchange (SXG) هي آلية تسليم تجعلها إمكانية مصادقة مصدر المورد بشكل مستقل عن طريقة تسليمه. توضح التعليمات التالية كيفية إعداد Signed Exchange باستخدام Web Packager (أداة Web Packager): يتم تضمين التعليمات الشهادتين الموقَّعة ذاتيًا وشهادات CanSignHttpExchanges

عرض ملفات SXG باستخدام شهادة موقَّعة ذاتيًا

إنّ استخدام شهادة موقعة ذاتيًا لعرض ملفات SXG يُستخدم بشكل أساسي في العرض التوضيحي والاختبار. ملفات SXG موقَّعة بشهادة موقَّعة ذاتيًا سيؤدي إلى ظهور رسائل خطأ في المتصفّح عند استخدامه خارج نطاق الاختبار من البيئات وينبغي عدم عرضه لبرامج الزحف.

المتطلبات الأساسية

لاتّباع هذه التعليمات، يجب أن يكون لديك openssl و تثبيت Go في بيئة التطوير.

إنشاء شهادة موقَّعة ذاتيًا

يوضح هذا القسم كيفية إنشاء شهادة موقعة ذاتيًا يمكن المستخدَمة مع تنسيقات Signed Exchange.

التعليمات

  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")
    

    يستخدم هذا الأمر المفتاح الخاص وCSR اللذين تم إنشاؤهما في الخطوتين 1 و2 لإنشاء ملف الشهادة 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 من الملفات في القسم التالي.

إعداد خادم Web Packager للاختبار

المتطلبات الأساسية

  1. ثبِّت Web Packager.

    git clone https://github.com/google/webpackager.git
    
  2. الإصدار webpkgserver.

    cd webpackager/cmd/webpkgserver
    go build .
    

    webpkgserver هو برنامج ثنائي محدّد ضمن مشروع Web Packager.

  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 إلى الموقع الجغرافي لعرض SXG. الشهادة. ويتم استخدام هذه المعلومات لضبط معلَمة cert-url في الـ Signature عنوان SXG. في بيئات الإنتاج، يتم استخدام CertURLBase. مثل هذا: CertURLBase = 'https://mysite.com/'. ومع ذلك، بالنسبة للمجالات المحلية الاختبار، يمكن استخدام CertURLBase = 'data:' لتوجيه webpkgserver لاستخدام البيانات عنوان URL لتضمين الشهادة في الحقل cert-url. للاختبار المحلي، فهذه هي الطريقة الأكثر ملاءمةً لتقديم شهادة SXG.
    • تغيير السطر Domain = 'example.org' ليعكس النطاق الذي إنشاء شهادة من أجله. إذا اتبعت التعليمات الواردة في هذا حرفيًا، يجب تغيير القيمة إلى example.com. لن يجلب webpkgserver المحتوى إلا من النطاق المشار إليه. webpkgserver.toml إذا حاولت جلب صفحات من نطاق مختلف بدون تعديل webpkgserver.toml، ستعرض سجلّات webpkgserver رسالة الخطأ URL doesn't match the fetch targets.

    اختياريّ

    إذا أردت تفعيل المورد الفرعي أو إيقافه التحميل المُسبق خيارات ضبط webpkgserver.toml التالية ذات صلة:

    • لإدراج توجيهات webpkgserver لتحميل صفحات الأنماط مُسبقًا والموارد الفرعية الخاصة بالنص البرمجي مثل SXG، غيِّر السطر #PreloadCSS = false إلى PreloadCSS = true. إضافةً إلى ذلك، غيِّر السطر #PreloadJS = false ليصبح PreloadJS = true.

      بدلاً من استخدام خيار الضبط هذا، يمكنك إضافة عناوين Link: rel="preload" وعلامات <link rel="preload"> إلى أو HTML الخاص بالصفحة.

    • تحلّ webpkgserver تلقائيًا محلّ علامات <link rel="preload"> الحالية. بعلامات <link> المكافئة اللازمة لجلب هذا المحتوى SXG. وأثناء تنفيذ ذلك، سيضبط webpkgserver allowed-alt-sxg أو header-integrity الأوامر حسب الحاجة - لا يحتاج مؤلفو HTML إلى إضافتها يدويًا. إلى تجاه هذا السلوك والمحافظة على عمليات التحميل المُسبقة الحالية التي لا تتبع SXG، وتغيير #KeepNonSXGPreloads (default = false) إلى KeepNonSXGPreloads = true تذكَّر أنّ تفعيل هذا الخيار قد يجعل عملية SXG غير مؤهَّلة للاستخدام ذاكرة التخزين المؤقت الخاصة بخدمة SXG من 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 بدون هذا الأمر، يؤدي فحص 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. افتح علامة التبويب شبكة أدوات مطوّري البرامج، ثم انتقِل إلى عنوان URL التالي: http://localhost:8080/priv/doc/https://example.com

    يؤدي هذا الإجراء إلى إنشاء طلب إلى المثيل webpackager الذي يعمل في http://localhost:8080 لمحتوى SXG الذي يتضمّن محتوى https://example.com /priv/doc/ هي نقطة نهاية واجهة برمجة التطبيقات التلقائية التي يستخدمها webpackager

    لقطة شاشة لعلامة التبويب &quot;الشبكة في أدوات مطوّري البرامج&quot; تعرض آلية SXG وشهادةها

    يتم عرض الموارد التالية في علامة التبويب الشبكة:

    • مرجع من النوع signed-exchange. هذه هي آلية SXG.
    • مرجع من النوع cert-chain+cbor. هذه شهادة SXG. يجب أن تستخدم شهادات SXG التنسيق application/cert-chain+cbor.
    • مرجع من النوع document. هذا هو المحتوى الذي تم تسليمه من خلال SXG.

    وإذا لم تظهر لك هذه الموارد، جرِّب محو ذاكرة التخزين المؤقت للمتصفّح، جارٍ إعادة تحميل http://localhost:8080/priv/doc/https://example.com.

    انقر على علامة التبويب Preview (معاينة) للاطّلاع على مزيد من المعلومات عن Signed Exchange. وتوقيعه.

    لقطة شاشة لعلامة التبويب &quot;معاينة&quot; تعرض SXG

عرض تنسيقات Signed Exchange باستخدام شهادة CanSignHttpExchanges

توضّح التعليمات الواردة في هذا القسم كيفية عرض ملفات SXG باستخدام شهادة واحدة (CanSignHttpExchanges) يتطلّب إنتاج محتوى SXG شهادة واحدة (CanSignHttpExchanges)

من أجل الإيجاز، تمت كتابة هذه التعليمات مع افتراض فهم المفاهيم التي تمت مناقشتها في قسم إعداد Signed Exchanges باستخدام ملف الشهادة .

المتطلبات الأساسية

  • لديك شهادة CanSignHttpExchanges. هذا النمط صفحة بمراجع التصديق التي توفر هذا النوع من الشهادات.

  • إذا لم تكن لديك شهادة، يمكنك تهيئة webpkgserver لاسترداد الشهادات تلقائيًا من مرجع التصديق. يمكنك اتباع الاتجاهات لما يجري في webpkgserver.toml في هذه الصفحة.

  • رغم أنه ليس شرطًا أساسيًا، ننصحك بشدة بتشغيل webpkgserver خلف خادم Edge. إذا كنت لا تستخدم خادم Edge، إلى ضبط الخيارَين TLS.PEMFile وTLS.KeyFile في webpkgserver.toml بشكل تلقائي، يتم تشغيل webpkgserver عبر HTTP. في المقابل، إنّ SXG أن يتم عرض الشهادات عبر HTTPS حتى يعتبرها المتصفّح صالحة. يؤدي ضبط كل من TLS.PEMFile وTLS.KeyFile إلى السماح لـ webpkgserver باستخدام HTTPS وبالتالي عرض شهادة SXG مباشرةً على المتصفّح.

التعليمات

  1. أنشئ ملف PEM من خلال إنشاء سلسلة من شهادة SXG على موقعك الإلكتروني متبوعة شهادة CA لموقعك. يمكن العثور على مزيد من التعليمات حول هذا الموضوع. هنا.

    PEM هو تنسيق ملف يُستخدم عادةً كحاوية لتخزين عدة الشهادات.

  2. أنشئ ملف webpkgsever.toml جديدًا من خلال نسخ المثال.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    
  3. افتح "webpkgserver.toml" باستخدام المحرِّر الذي تختاره واستخدِم التغييرات التالية:

    • تغيير السطر PEMFile = cert.pem ليعكس موقع PEM يتضمن سلسلة الشهادات الكاملة.
    • تغيير السطر KeyFile = 'priv.key' ليعكس موقع المفتاح الخاص المقابل لملف PEM.
    • عليك تغيير السطر Domain = 'example.org' ليعكس موقعك الإلكتروني.
    • (اختياري) لطلب التجديد التلقائي من webpkgserver لشهادة SXG كل 90 يومًا (45 يومًا بالنسبة إلى Google)، يمكنك ضبط الخيارات في القسم [SXG.ACME] من webpkgserver.toml لا ينطبق هذا الخيار إلا على المواقع الإلكترونية التي لديها شهادة DigiCert أو إعداد حساب Google ACME.
  4. ضبط خادم Edge لإعادة توجيه حركة البيانات إلى webpkgserver مثال.

    هناك نوعان أساسيان من الطلبات التي يعالجها "webpkgserver": الطلبات لملفات SXG (التي تعرضها نقطة النهاية /priv/doc/) وطلبات شهادة SXG (التي تعرضها نقطة نهاية /webpkg/cert/). تشير رسالة الأشكال البيانية تختلف قواعد إعادة كتابة عناوين URL لكل نوع من أنواع الطلبات هذه قليلاً. بالنسبة لمزيد من المعلومات، يُرجى الاطّلاع على مقالة الجري خلف الحافة الأمامية. الخادم.

    ملاحظة:

    بشكل تلقائي، يعرض webpkgserver شهادة SXG على /webpkg/cert/$CERT_HASH: على سبيل المثال، /webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY لإنشاء $CERT_HASH، شغِّل الأمر التالي: shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =