تعرَّف على كيفية عرض Signed Exchange (SXG) باستخدام Web Packager.
Signed Exchange (SXG) هي آلية تسليم تجعلها
إمكانية مصادقة مصدر المورد بشكل مستقل عن طريقة تسليمه.
توضح التعليمات التالية كيفية إعداد Signed Exchange باستخدام
Web Packager (أداة Web Packager): يتم تضمين التعليمات
الشهادتين الموقَّعة ذاتيًا وشهادات CanSignHttpExchanges
عرض ملفات SXG باستخدام شهادة موقَّعة ذاتيًا
إنّ استخدام شهادة موقعة ذاتيًا لعرض ملفات SXG يُستخدم بشكل أساسي في العرض التوضيحي والاختبار. ملفات SXG موقَّعة بشهادة موقَّعة ذاتيًا سيؤدي إلى ظهور رسائل خطأ في المتصفّح عند استخدامه خارج نطاق الاختبار من البيئات وينبغي عدم عرضه لبرامج الزحف.
المتطلبات الأساسية
لاتّباع هذه التعليمات، يجب أن يكون لديك openssl و تثبيت Go في بيئة التطوير.
إنشاء شهادة موقَّعة ذاتيًا
يوضح هذا القسم كيفية إنشاء شهادة موقعة ذاتيًا يمكن المستخدَمة مع تنسيقات Signed Exchange.
التعليمات
أنشئ مفتاحًا خاصًا.
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). وعلى الرغم من أنك لن تطلب شهادة من 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")
يستخدم هذا الأمر المفتاح الخاص و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
لتحميل صفحات الأنماط مُسبقًا والموارد الفرعية الخاصة بالنص البرمجي مثل 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
.انقر على علامة التبويب Preview (معاينة) للاطّلاع على مزيد من المعلومات عن Signed Exchange. وتوقيعه.
- مرجع من النوع
عرض تنسيقات 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 مباشرةً على المتصفّح.
التعليمات
أنشئ ملف PEM من خلال إنشاء سلسلة من شهادة SXG على موقعك الإلكتروني متبوعة شهادة CA لموقعك. يمكن العثور على مزيد من التعليمات حول هذا الموضوع. هنا.
PEM هو تنسيق ملف يُستخدم عادةً كحاوية لتخزين عدة الشهادات.
أنشئ ملف
webpkgsever.toml
جديدًا من خلال نسخ المثال.cp ./webpkgserver.example.toml ./webpkgserver.toml
افتح "
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.
- تغيير السطر
ضبط خادم 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 =