تعرَّف على كيفية عرض عمليات التبادل الموقَّعة (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")
يستخدم هذا الأمر المفتاح الخاص و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 للاختبار
المتطلبات الأساسية
ثبِّت Web Packager.
git clone https://github.com/google/webpackager.git
الإصدار
webpkgserver
cd 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
.انقر على علامة التبويب معاينة للاطّلاع على مزيد من المعلومات عن ملف Signed Exchange وتوقيعه.
- مورد من النوع
عرض عمليات التبادل الموقَّعة باستخدام شهادة 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 =