نحوه ارائه خدمات مبادلات امضا شده (SXG) با استفاده از بستهبندی وب را بیاموزید.
صرافی امضا شده (SXG) مکانیزم تحویل است که احراز هویت مبدأ یک منبع را مستقل از نحوه تحویل آن ممکن میسازد. دستورالعمل های زیر نحوه راه اندازی Signed Exchanges با استفاده از 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) را منتقل می کند. اگرچه از یک 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.gitwebpkgserverبسازید.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در هدرSignatureSXG استفاده می شود. در محیط های تولید،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 را برای کش Google SXG بر اساس این الزامات واجد شرایط نباشد.
- خط
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 در DevToolsCertificate verification error: ERR_CERT_INVALID.توجه:
ممکن است لازم باشد این دستور را طوری تنظیم کنید که مکان کروم روی دستگاه شما و همچنین مکان
cert.pemرا نشان دهد. اگر این کار را به درستی انجام داده باشید، باید یک هشدار در زیر نوار آدرس نمایش داده شود. هشدار باید مشابه این باشد:You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.اگر اخطار شامل رشته هش نباشد، مکان گواهی SXG را به درستی نشان ندادهاید.
برگه DevTools Network را باز کنید، سپس از URL زیر دیدن کنید:
http://localhost:8080/priv/doc/https://example.com.این یک درخواست به نمونه
webpackagerدر حال اجرا درhttp://localhost:8080برای یک SXG حاوی محتویاتhttps://example.comمی دهد./priv/doc/نقطه پایانی پیشفرض API است که توسطwebpackagerاستفاده میشود.
منابع زیر در تب Network فهرست شده اند:
- منبعی با نوع
signed-exchange. این SXG است. - منبعی با نوع
cert-chain+cbor. این گواهی SXG است. گواهینامه های SXG باید از فرمتapplication/cert-chain+cborاستفاده کنند. - منبعی با نوع
documentاین محتوایی است که از طریق SXG ارائه شده است.
اگر این منابع را نمیبینید، حافظه پنهان مرورگر را پاک کنید، سپس
http://localhost:8080/priv/doc/https://example.comدوباره بارگیری کنید.برای مشاهده اطلاعات بیشتر در مورد Signed Exchange و امضای آن، روی تب Preview کلیک کنید.

- منبعی با نوع
صرافی های امضا شده را با استفاده از گواهی CanSignHttpExchanges ارائه دهید
دستورالعمل های این بخش نحوه سرویس دهی به SXG ها با استفاده از گواهی CanSignHttpExchanges را توضیح می دهد. استفاده تولیدی از SXG به گواهی CanSignHttpExchanges نیاز دارد.
برای اختصار، این دستورالعملها با این فرض نوشته شدهاند که مفاهیم بحثشده در Setup Signed Exchanges را با استفاده از بخش گواهی خودامضا میفهمید.
پیش نیازها
شما یک گواهی
CanSignHttpExchangesدارید. این صفحه CA هایی را که این نوع گواهی را ارائه می دهند فهرست می کند.اگر گواهی ندارید، می توانید سرور webpkg خود را طوری پیکربندی کنید که به طور خودکار گواهی ها را از CA شما بازیابی کند. می توانید دستورالعمل های مربوط به آنچه در
webpkgserver.tomlدر این صفحه وجود دارد را دنبال کنید.اگرچه الزامی نیست، اما اکیداً توصیه می شود که
webpkgserverدر پشت سرور لبه اجرا کنید. اگر از سرور لبه استفاده نمی کنید، باید گزینه هایTLS.PEMFileوTLS.KeyFileرا درwebpkgserver.tomlپیکربندی کنید. به طور پیش فرض،webpkgserverاز طریق HTTP اجرا می شود. با این حال، گواهیهای SXG باید از طریق HTTPS ارائه شوند تا توسط مرورگر معتبر تلقی شوند. پیکربندیTLS.PEMFileوTLS.KeyFileبهwebpkgserverاجازه می دهد تا از HTTPS استفاده کند و بنابراین گواهی SXG را مستقیماً به مرورگر ارائه دهد.
دستورالعمل ها
با الحاق گواهی SXG سایت خود و سپس گواهی CA سایت خود، یک فایل PEM ایجاد کنید. دستورالعمل های بیشتر در این مورد را می توان در اینجا یافت.
PEM یک فرمت فایل است که معمولاً به عنوان یک "کانتینر" برای ذخیره چندین گواهی استفاده می شود.
با کپی کردن مثال، یک فایل
webpkgsever.tomlتازه ایجاد کنید.cp ./webpkgserver.example.toml ./webpkgserver.tomlwebpkgserver.tomlبا ویرایشگر انتخابی خود باز کنید و تغییرات زیر را اعمال کنید:- خط
PEMFile = cert.pemرا تغییر دهید تا مکان فایل PEM حاوی زنجیره کامل گواهی شما را منعکس کند. - خط
KeyFile = 'priv.key'تغییر دهید تا مکان کلید خصوصی مربوط به فایل PEM شما منعکس شود. - خط
Domain = 'example.org'را تغییر دهید تا سایت شما را منعکس کند. - (اختیاری) برای تمدید خودکار گواهینامه SXG
webpkgserverهر 90 روز (45 روز برای Google)، گزینهها را در بخش[SXG.ACME]webpkgserver.tomlپیکربندی کنید. این گزینه فقط برای سایت هایی اعمال می شود که دارای تنظیمات حساب DigiCert یا Google ACME هستند.
- خط
سرور لبه خود را برای ارسال ترافیک به نمونه
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 =