تعرَّف على كيفية عرض عمليات التبادل الموقَّعة (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'
طلب توقيع الشهادة هو جزء من نص مرمّز ينقل المعلومات اللازمة لطلب شهادة من هيئة إصدار الشهادات(CA). على الرغم من أنّك لن تطلب شهادة من هئية إصدار الشهادات، لا يزال من الضروري إنشاء طلب توقيع شهادة.
ينشئ الأمر أعلاه طلب توقيع شهادة لمؤسسة اسمها
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
الإصدار
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 =