تعرَّف على كيفية عرض عمليات التبادل الموقَّعة (SXG) باستخدام Web Packager.
التبادل الموقَّع (SXG) هو آلية تسليم تجعل
من الممكن مصادقة مصدر أحد الموارد بغض النظر عن كيفية تسليمه.
توضِّح التعليمات التالية كيفية إعداد عمليات Signed Exchange باستخدام
Web Packager. تتوفّر تعليمات بشأن
كلّ من الشهادات الموقَّعة ذاتيًا وCanSignHttpExchanges.
عرض ملفات SXG باستخدام شهادة موقَّعة ذاتيًا
يُستخدم استخدام شهادة موقعة ذاتيًا لعرض خرائط SXG بشكل أساسي لأغراض العرض والاختبار. إنّ ملفات SXG الموقَّعة بشهادة موقَّعة ذاتيًا ستُنشئ رسائل خطأ في المتصفّح عند استخدامها خارج البيئات الاختبارية، ويجب عدم عرضها على برامج الزحف.
المتطلبات الأساسية
اتّباع هذه التعليمات يتطلّب تثبيت openssl و Go في بيئة التطوير.
إنشاء شهادة موقَّعة ذاتيًا
يوضّح هذا القسم كيفية إنشاء شهادة موقَّعة ذاتيًا يمكن استخدامها مع عمليات التبادل الموقَّعة.
التعليمات
أنشئ مفتاحًا خاصًا.
openssl ecparam -out priv.key -name prime256v1 -genkeyسيتم حفظ المفتاح الخاص كملف باسم
priv.key.أنشئ طلب توقيع شهادة (CSR).
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 للنشر، سيكون هذا الموقع الإلكتروني مملوكًا لك. ومع ذلك، في بيئة اختبار مثل تلك الموضّحة في هذه التعليمات، يمكن أن يكون أي موقع إلكتروني.
أنشئ شهادة تتضمّن إضافة
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 لإنشاءملف الشهادة
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 للاختبار
المتطلبات الأساسية
ثبِّت Web Packager.
git clone https://github.com/google/webpackager.gitالإصدار
webpkgservercd webpackager/cmd/webpkgserver go build .webpkgserverهو ملف ثنائي محدّد ضمن مشروع Web Packager.تأكَّد من أنّه تم تثبيت
webpkgserverبشكل صحيح../webpkgserver --helpمن المفترض أن يعرِض هذا الأمر معلومات عن استخدام
webpkgserver. إذا لم تنجح هذه الطريقة، يمكنك التحقّق من ضبط GOPATH بشكلٍ صحيح كخطوة أولى جيدة لتحديد المشاكل وحلّها.
التعليمات
انتقِل إلى الدليل
webpkgserver(قد تكون في هذا الدليل حاليًا).cd /path/to/cmd/webpkgserverأنشئ ملف
webpkgsever.tomlمن خلال نسخ المثال.cp ./webpkgserver.example.toml ./webpkgserver.tomlيحتوي هذا الملف على خيارات الضبط لـ
webpkgserver.افتح
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توجيهات لتحميل ملفات stylesheet والموارد الفرعية للنص البرمجي مسبقًا كملفّات 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 وفقًا لهذه المتطلبات.
- غيِّر السطر
ابدأ
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.شغِّل 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.
افتح علامة التبويب الشبكة في "أدوات مطوّري البرامج"، ثم انتقِل إلى عنوان URL التالي:
http://localhost:8080/priv/doc/https://example.com.يؤدي ذلك إلى إرسال طلب إلى مثيل
webpackagerالذي يعمل على http://localhost:8080للحصول على SXG يحتوي على محتوى https://example.com./priv/doc/هي نقطة نهاية واجهة برمجة التطبيقات التلقائية التي يستخدمهاwebpackager.
يتم إدراج المراجع التالية في علامة التبويب الشبكة:
- مورد من النوع
signed-exchangeهذا هو SXG. - مورد من النوع
cert-chain+cborهذه هي شهادة SXG. يجب أن تستخدم شهادات SXG تنسيقapplication/cert-chain+cbor. - مورد من النوع
documentهذا هو المحتوى الذي تم إرساله من خلال SXG.
إذا لم تظهر لك هذه المراجع، حاوِل محو ذاكرة التخزين المؤقت للمتصفّح، ثم أعِد تحميل الصفحة
http://localhost:8080/priv/doc/https://example.com.انقر على علامة التبويب معاينة للاطّلاع على مزيد من المعلومات عن ملف التبادل الموقَّع وتوقيعه.

- مورد من النوع
عرض عمليات التبادل الموقَّعة باستخدام شهادة CanSignHttpExchanges
توضّح التعليمات الواردة في هذا القسم كيفية عرض جداول بيانات SXG باستخدام شهادة
CanSignHttpExchanges. يتطلب استخدام ملفات SXG في مرحلة الإنتاج شهادة
CanSignHttpExchanges.
اختصارًا، تم وضع هذه التعليمات بافتراض أنّك تفهم المفاهيم التي تمت مناقشتها في قسم إعداد عمليات Signed Exchange باستخدام شهادة موقَّعة ذاتيًا.
المتطلبات الأساسية
لديك شهادة
CanSignHttpExchanges. تسرد هذه الصفحة مراجع التصديق التي تقدّم هذا النوع من الشهادات.إذا لم يكن لديك شهادة، يمكنك ضبط webpkgserver ل retrieving automatically retrieve certificates from your CA. يمكنك اتّباع التعليمات حول ما يجب إدخاله في الحقل
webpkgserver.tomlفي هذه الصفحة.على الرغم من أنّه ليس شرطًا، ننصحك بشدة بتشغيل
webpkgserverمن خلال خادم سحابي EDGE. إذا كنت لا تستخدم خادمًا طرفيًا، عليك ضبط خيارَيTLS.PEMFileوTLS.KeyFileفيwebpkgserver.toml. يتم تشغيلwebpkgserverتلقائيًا عبر HTTP. ومع ذلك، يجب عرض شهادات SXG عبر HTTPS ليعتبرها المتصفّح صالحة. يتيح ضبطTLS.PEMFileوTLS.KeyFileلـwebpkgserverاستخدام بروتوكول HTTPS وبالتالي عرض شهادة SXG مباشرةً في المتصفّح.
التعليمات
أنشئ ملف PEM من خلال تسلسل شهادة SXG لموقعك الإلكتروني ثم شهادة هيئة إصدار الشهادات لموقعك الإلكتروني. يمكنك الاطّلاع على مزيد من التعليمات حول هذا الموضوع هنا.
PEM هو تنسيق ملف يُستخدَم عادةً كسِمة "حاوية" لتخزين عدة شهادات.
أنشئ ملف
webpkgsever.tomlجديدًا عن طريق نسخ المثال.cp ./webpkgserver.example.toml ./webpkgserver.tomlافتح
webpkgserver.tomlباستخدام المحرِّر الذي تختاره وأدخِل التغييرات التالية:- غيِّر السطر
PEMFile = cert.pemليعكس موقع ملف PEM الذي يحتوي على سلسلة الشهادة الكاملة. - غيِّر السطر
KeyFile = 'priv.key'ليعكس موقع المفتاح الخاص المرتبط بملف PEM. - غيِّر السطر
Domain = 'example.org'ليعكس موقعك الإلكتروني. - (اختياري) لتجديد شهادة SXG تلقائيًا كل 90 يومًا (45 يومًا في Google) من خلال
webpkgserver، عليك ضبط الخيارات في قسم[SXG.ACME]منwebpkgserver.toml. لا ينطبق هذا الخيار إلا على المواقع الإلكترونية التي تم إعداد حساب DigiCert أو Google ACME لها.
- غيِّر السطر
اضبط خادم الحافة لإعادة توجيه الزيارات إلى مثيل
webpkgserver.هناك نوعان أساسيان من الطلبات التي يعالجها
webpkgserver: طلبات لخدمات SXG (التي تقدّمها نقطة النهاية/priv/doc/) وطلبات شهادة SXG (التي تقدّمها نقطة النهاية/webpkg/cert/). تختلف قواعد إعادة كتابة عناوين URL لكل نوع من أنواع الطلبات هذه بشكل طفيف. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التشغيل من خلال خادم edge للواجهة الأمامية.ملاحظة:
يعرض
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 =