Web Paketleyici'yi kullanarak imzalı takasları (SXG'ler) nasıl yayınlayacağınızı öğrenin.
İmzalı takas (SXG), bir kaynağın nasıl yayınlandığından bağımsız olarak kaynağın kimliğini doğrulamayı sağlayan bir yayınlama mekanizmasıdır.
Aşağıdaki talimatlarda, Web Paketleyici'yi kullanarak imzalı takasların nasıl ayarlanacağı açıklanmaktadır. Hem kendinden imzalı hem de CanSignHttpExchanges sertifikaları için talimatlar verilmiştir.
Kendinden imzalı sertifika kullanarak SXG yayınlama
SXG yayınlamak için kendinden imzalı sertifika kullanmak, öncelikle gösterim ve test amacıyla kullanılır. Kendinden imzalı bir sertifikayla imzalanan SXG'ler, test ortamları dışında kullanıldığında tarayıcıda hata mesajları oluşturur ve tarayıcılara sunulmamalıdır.
Ön koşullar
Bu talimatları uygulamak için geliştirme ortamınızda openssl ve Go'nun yüklü olması gerekir.
Kendinden imzalı sertifika oluşturma
Bu bölümde, imzalı exchange'lerle kullanılabilecek kendi kendine imzalı bir sertifikanın nasıl oluşturulacağı açıklanmaktadır.
Talimatlar
Özel anahtar oluşturun.
openssl ecparam -out priv.key -name prime256v1 -genkeyÖzel anahtar,
priv.keyadlı bir dosya olarak kaydedilir.Sertifika imzalama isteği (CSR) oluşturun.
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'Sertifika imzalama isteği, bir sertifika yetkilisinden(CA) sertifika istemek için gerekli bilgileri içeren kodlanmış bir metin bloğudur. Bir sertifika yetkilisinden sertifika istemeyecek olsanız bile sertifika imzalama isteği oluşturmanız gerekir.
Yukarıdaki komut,
Web Packager Demoadlı veexample.comortak adına sahip bir kuruluş için sertifika imzalama isteği oluşturur. Ortak ad, SXG olarak paketlemek istediğiniz içeriği içeren sitenin tam nitelikli alan adıdır.Üretim SXG kurulumunda bu, size ait bir site olur. Ancak bu talimatlarda açıklanan test ortamında herhangi bir site olabilir.
CanSignHttpExchangesuzantısına sahip bir sertifika oluşturun.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")Bu komut,
cert.pemsertifika dosyasını oluşturmak için 1. ve 2. adımlarda oluşturulan özel anahtarı ve CSR'yi kullanır.-extfileişareti, sertifikayıCanSignHttpExchangessertifika uzantısıyla ilişkilendirir (1.3.6.1.4.1.11129.2.1.22,CanSignHttpExchangesuzantısı için nesne tanımlayıcısı'dır). Ayrıca-extfileişareti,example.comdeğerini özne alternatif adı olarak da tanımlar.cert.pemiçeriğini merak ediyorsanız aşağıdaki komutu kullanarak görüntüleyebilirsiniz:openssl x509 -in cert.pem -noout -textÖzel anahtar ve sertifika oluşturma işleminiz tamamlandı. Bir sonraki bölümde
priv.keyvecert.pemdosyalarına ihtiyacınız olacak.
Web Paketleyici sunucusunu test için ayarlama
Ön koşullar
Web Paketleyici'yi yükleyin.
git clone https://github.com/google/webpackager.gitwebpkgserver'ü oluşturun.cd webpackager/cmd/webpkgserver go build .webpkgserver, Web Paketleyici projesindeki belirli bir ikili dosyadır.webpkgserver'ün doğru şekilde yüklendiğinden emin olun../webpkgserver --helpBu komut,
webpkgserverkullanımıyla ilgili bilgileri döndürmelidir. Bu yöntem işe yaramazsa ilk olarak GOPATH'inizin doğru yapılandırıldığından emin olun.
Talimatlar
webpkgserverdizinine gidin (zaten bu dizinde olabilirsiniz).cd /path/to/cmd/webpkgserverÖrneği kopyalayarak bir
webpkgsever.tomldosyası oluşturun.cp ./webpkgserver.example.toml ./webpkgserver.tomlBu dosya,
webpkgserveriçin yapılandırma seçeneklerini içerir.webpkgserver.tomldosyasını istediğiniz bir düzenleyicide açıp aşağıdaki değişiklikleri yapın:#AllowTestCert = falsesatırınıAllowTestCert = trueolarak değiştirin.PEMFile = 'path/to/your.pem'satırını, oluşturduğunuz PEM sertifikasının (cert.pem) yolunu yansıtacak şekilde değiştirin.TLS.PEMFileifadesinin yer aldığı satırı değiştirmeyin. Bu, farklı bir yapılandırma seçeneğidir.KeyFile = 'priv.key'satırını, oluşturduğunuz özel anahtarın (priv.key) yolunu yansıtacak şekilde değiştirin.TLS.KeyFile'ten bahseden satırı değiştirmeyin. Bu, farklı bir yapılandırma seçeneğidir.#CertURLBase = '/webpkg/cert'satırınıCertURLBase = 'data:'olarak değiştirin.CertURLBase, SXG sertifikasının yayınlanma yerini gösterir. Bu bilgiler, SXG'ninSignaturebaşlığındacert-urlparametresini ayarlamak için kullanılır. Üretim ortamlarındaCertURLBaseşu şekilde kullanılır:CertURLBase = 'https://mysite.com/'. Ancak yerel test içinCertURLBase = 'data:',webpkgserver'a sertifikayıcert-urlalanına satır içi olarak yerleştirmek üzere bir veri URL'si kullanması talimatını vermek üzere kullanılabilir. Yerel test için SXG sertifikasını yayınlamanın en uygun yolu budur.Domain = 'example.org'satırını, sertifika oluşturduğunuz alanı yansıtacak şekilde değiştirin. Bu makaledeki talimatları aynen uyguladıysanız bu değerexample.comolarak değiştirilir.webpkgserveryalnızcawebpkgserver.tomltarafından belirtilen alandan içerik getirir.webpkgserver.toml'yi güncellemeden farklı bir alandan sayfa getirmeye çalışırsanızwebpkgservergünlüklerindeURL doesn't match the fetch targetshata mesajı gösterilir.
İsteğe bağlı
Alt kaynak ön yüklemeyi etkinleştirmek veya devre dışı bırakmak istiyorsanız aşağıdaki
webpkgserver.tomlyapılandırma seçenekleri alakalı olacaktır:webpkgserver'nin stil sayfası ve komut dosyası alt kaynaklarını SXG olarak önceden yükleme talimatları eklemesini sağlamak için#PreloadCSS = falsesatırınıPreloadCSS = trueolarak değiştirin. Ayrıca#PreloadJS = falsesatırınıPreloadJS = trueolarak değiştirin.Bu yapılandırma seçeneğini kullanmaya alternatif olarak, sayfanın HTML'sine manuel olarak
Link: rel="preload"üstbilgileri ve<link rel="preload">etiketleri ekleyebilirsiniz.Varsayılan olarak
webpkgserver, mevcut<link rel="preload">etiketlerini bu içeriği SXG olarak almak için gereken eşdeğer<link>etiketleriyle değiştirir. Bu işlem sırasındawebpkgserver,allowed-alt-sxgveheader-integrityyönergelerini gerektiği gibi ayarlar. HTML yazarlarının bunları manuel olarak eklemesi gerekmez. Bu davranışı geçersiz kılmak ve mevcut SXG olmayan ön yüklemeleri korumak için#KeepNonSXGPreloads (default = false)değeriniKeepNonSXGPreloads = trueolarak değiştirin. Bu seçeneğin etkinleştirilmesinin, SXG'nin bu şartlara göre Google SXG önbelleği için uygunluğunu etkileyebileceğini unutmayın.
webpkgserver'ü başlatın../webpkgserverSunucu başarıyla başlatıldıysa aşağıdaki günlük mesajlarını görürsünüz:
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkgGünlük mesajlarınız biraz farklı görünebilir. Özellikle,
webpkgserver'ün sertifikaları önbelleğe almak için kullandığı dizin işletim sistemine göre değişir.Bu mesajları görmüyorsanız sorun giderme adımlarından ilkini
webpkgserver.toml'ü tekrar kontrol etmek olarak belirleyebilirsiniz.webpkgserver.toml'ü güncellersenizwebpkgserver'u yeniden başlatmanız gerekir.Aşağıdaki komutu kullanarak Chrome'u başlatın:
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`Bu komut, Chrome'a
cert.pemile ilişkili sertifika hatalarını yoksamasını söyler. Bu sayede SXG'leri test sertifikası kullanarak test edebilirsiniz. Chrome bu komut olmadan başlatılırsa DevTools'ta SXG incelendiğindeCertificate verification error: ERR_CERT_INVALIDhatası gösterilir.Not:
Bu komutu, makinenizdeki Chrome'un konumunu ve
cert.pem'ün konumunu yansıtacak şekilde ayarlamanız gerekebilir. Bu işlemi doğru şekilde yaptıysanız adres çubuğunun altında bir uyarı görürsünüz. Uyarı şuna benzer:You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.Uyarıda karma oluşturma dizesi yoksa SXG sertifikasının konumunu doğru şekilde belirtmemişsinizdir.
Geliştirici Araçları Ağ sekmesini açın, ardından şu URL'yi ziyaret edin:
http://localhost:8080/priv/doc/https://example.com.Bu işlem,
http://localhost:8080adresinde çalışanwebpackagerörneğinehttps://example.comiçeriğini içeren bir SXG için istek gönderir./priv/doc/,webpackagertarafından kullanılan varsayılan API uç noktasıdır.
Ağ sekmesinde aşağıdaki kaynaklar listelenir:
signed-exchangetürüne sahip bir kaynak. Bu, SXG'dir.cert-chain+cbortürüne sahip bir kaynak. Bu, SXG sertifikası. SXG sertifikalarıapplication/cert-chain+cborbiçimini kullanmalıdır.documenttürüne sahip bir kaynak. Bu, SXG aracılığıyla yayınlanan içeriktir.
Bu kaynakları görmüyorsanız tarayıcı önbelleğini temizleyip
http://localhost:8080/priv/doc/https://example.comsayfasını yeniden yüklemeyi deneyin.İmzalı Exchange ve imzası hakkında daha fazla bilgi edinmek için Önizleme sekmesini tıklayın.

CanSignHttpExchanges sertifikası kullanarak imzalı takas yayınlama
Bu bölümdeki talimatlarda, CanSignHttpExchanges sertifikası kullanılarak SXG'lerin nasıl yayınlanacağı açıklanmaktadır. SXG'lerin üretimde kullanılması için CanSignHttpExchanges sertifikası gerekir.
Bu talimatlar, kısalık olması amacıyla Kendi kendine imzalı sertifika kullanarak imzalı takasları ayarlama bölümünde ele alınan kavramları anladığınız varsayılarak yazılmıştır.
Ön koşullar
CanSignHttpExchangessertifikanız var. Bu tür sertifikalar sunan CA'lar bu sayfada listelenir.Sertifikanızın yoksa webpkgserver'ınızı, CA'nızdan otomatik olarak sertifika alacak şekilde yapılandırabilirsiniz.
webpkgserver.tomlalanına nelerin girileceğine dair talimatları bu sayfada bulabilirsiniz.Zorunlu olmamakla birlikte,
webpkgserver'ü bir uç sunucuda çalıştırmanız önemle tavsiye edilir. Kenar sunucusu kullanmıyorsanızwebpkgserver.toml'deTLS.PEMFileveTLS.KeyFileseçeneklerini yapılandırmanız gerekir.webpkgservervarsayılan olarak HTTP üzerinden çalışır. Ancak SXG sertifikalarının tarayıcı tarafından geçerli kabul edilmesi için HTTPS üzerinden sunulması gerekir.TLS.PEMFileveTLS.KeyFileyapılandırıldığındawebpkgserver, HTTPS'yi kullanabilir ve bu nedenle SXG sertifikasını doğrudan tarayıcıya sunabilir.
Talimatlar
Sitenizin SXG sertifikasını, ardından sitenizin CA sertifikasını birleştirerek bir PEM dosyası oluşturun. Bu konuyla ilgili daha fazla talimatı burada bulabilirsiniz.
PEM, genellikle birden fazla sertifikayı depolamak için "kapsayıcı" olarak kullanılan bir dosya biçimidir.
Örneği kopyalayarak yeni bir
webpkgsever.tomldosyası oluşturun.cp ./webpkgserver.example.toml ./webpkgserver.tomlwebpkgserver.tomldosyasını istediğiniz düzenleyicide açıp aşağıdaki değişiklikleri yapın:PEMFile = cert.pemsatırını, sertifika zincirinizin tamamını içeren PEM dosyasının konumunu yansıtacak şekilde değiştirin.KeyFile = 'priv.key'satırını, PEM dosyanıza karşılık gelen özel anahtarın konumunu yansıtacak şekilde değiştirin.Domain = 'example.org'satırını sitenizi yansıtacak şekilde değiştirin.- (İsteğe bağlı)
webpkgserver'in SXG sertifikasını 90 günde bir (Google için 45 günde bir) otomatik olarak yenilemesi içinwebpkgserver.toml'nin[SXG.ACME]bölümündeki seçenekleri yapılandırın. Bu seçenek yalnızca DigiCert veya Google ACME hesabı kurulumu olan siteler için geçerlidir.
Kenar sunucunuzu, trafiği
webpkgserverörneğine yönlendirecek şekilde yapılandırın.webpkgservertarafından işlenen iki ana istek türü vardır: SXG istekleri (/priv/doc/uç noktası tarafından sunulur) ve SXG sertifikası istekleri (/webpkg/cert/uç noktası tarafından sunulur). Bu istek türlerinin her biri için URL yeniden yazma kuralları biraz farklılık gösterir. Daha fazla bilgi için Ön uç uç sunucusunun arkasında çalıştırma başlıklı makaleyi inceleyin.Not:
Varsayılan olarak
webpkgserver, SXG sertifikasını/webpkg/cert/$CERT_HASHadresinde sunar (ör./webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY).$CERT_HASHoluşturmak için aşağıdaki komutu çalıştırın:shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =