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ı ve- example.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.keyve- cert.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.git
- webpkgserver'ü 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 --help- Bu 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.toml- Bu 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'nin- Signaturebaşlığında- cert-urlparametresini ayarlamak için kullanılır. Üretim ortamlarında- CertURLBaseşu şekilde kullanılır:- CertURLBase = 'https://mysite.com/'. Ancak yerel test için- CertURLBase = '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ğer- example.comolarak değiştirilir.- webpkgserveryalnızca- webpkgserver.tomltarafından belirtilen alandan içerik getirir.- webpkgserver.toml'yi güncellemeden farklı bir alandan sayfa getirmeye çalışırsanız- webpkgservergünlüklerinde- URL 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ında- webpkgserver,- allowed-alt-sxgve- header-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ğerini- KeepNonSXGPreloads = 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.- ./webpkgserver- Sunucu 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/webpkg- Gü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üncellerseniz- webpkgserver'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ğinde- Certificate 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ışan- webpackagerörneğine- https://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ız- webpkgserver.toml'de- TLS.PEMFileve- TLS.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.PEMFileve- TLS.KeyFileyapılandırıldığında- webpkgserver, 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.toml
- webpkgserver.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 =
