Web Paketleyici'yi kullanarak İmzalı Takasları ayarlama

Web Packager kullanarak imzalı takaslar (SXG'ler) yayınlamayı öğrenin.

Katie Hempenius
Katie Hempenius

İmzalı değişim (SXG), bir kaynağın kaynağının nasıl teslim edildiğinden bağımsız olarak kimliğinin doğrulanmasını sağlayan bir iletim mekanizmasıdır. Aşağıdaki talimatlarda, Web Packager kullanılarak İmzalanmış Takasların nasıl ayarlanacağı açıklanmaktadır. Hem kendinden imzalı hem de CanSignHttpExchanges sertifikalar için talimatlar verilmiştir.

Kendinden imzalı bir sertifika kullanarak SXG'leri sunma

SXG'lere hizmet vermek için kendinden imzalı sertifika kullanmak, öncelikli olarak gösterim ve test amacıyla kullanılır. Kendinden imzalı sertifikayla imzalanmış 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ı takaslarla kullanılabilecek kendinden imzalı bir sertifikanın nasıl oluşturulacağı açıklanmaktadır.

Talimatlar

  1. Özel anahtar oluşturun.

    openssl ecparam -out priv.key -name prime256v1 -genkey
    

    Özel anahtar, priv.key adlı bir dosya olarak kaydedilecek.

  2. 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 ileten kodlanmış metin bloğudur. Bir CA'dan sertifika istemeyecek olsanız da sertifika imzalama isteği oluşturmanız gerekir.

    Yukarıdaki komut, example.com ortak adına sahip Web Packager Demo adlı bir kuruluş için sertifika imzalama isteği oluşturur. Ortak ad, SXG olarak paketlemek istediğiniz içeriği barındıran sitenin tam alan adı olmalıdır.

    Bir üretim SXG kurulumunda bu, sahibi olduğunuz bir site olacaktır. Ancak, bu talimatlarda açıklanan gibi bir test ortamında herhangi bir site olabilir.

  3. CanSignHttpExchanges uzantı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.pem sertifika dosyasını oluşturmak için özel anahtarı ve 1. ve 2. adımlarda oluşturulan CSR'yi kullanır. -extfile işareti, sertifikayı CanSignHttpExchanges sertifika uzantısıyla ilişkilendirir (1.3.6.1.4.1.11129.2.1.22, CanSignHttpExchanges uzantısının nesne tanımlayıcısıdır). Ayrıca, -extfile işaretinde example.com, Konu Alternatif Adı olarak tanımlanır.

    cert.pem içeriklerini merak ediyorsanız aşağıdaki komutu kullanarak bunları görüntüleyebilirsiniz:

    openssl x509 -in cert.pem -noout -text
    

    Özel anahtar ve sertifika oluşturma işlemini tamamladınız. Sonraki bölümde priv.key ve cert.pem dosyalarına ihtiyacınız olacak.

Test için Web Paketleyici sunucusunu kurma

Ön koşullar

  1. Web Packager'ı yükleyin.

    git clone https://github.com/google/webpackager.git
    
  2. webpkgserver derlemesi.

    cd webpackager/cmd/webpkgserver
    go build .
    

    webpkgserver, Web Packager projesindeki belirli bir ikili programdır.

  3. webpkgserver ürününün doğru şekilde yüklendiğini doğrulayın.

    ./webpkgserver --help
    

    Bu komut, webpkgserver kullanımı hakkında bilgi döndürecektir. Bu işe yaramazsa ilk iyi sorun giderme adımı GOPATH yolunuzun doğru şekilde yapılandırıldığını doğrulamaktır.

Talimatlar

  1. webpkgserver dizinine gidin (zaten bu dizinde olabilirsiniz).

    cd /path/to/cmd/webpkgserver
    
  2. Örneği kopyalayarak bir webpkgsever.toml dosyası oluşturun.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    

    Bu dosya, webpkgserver için yapılandırma seçeneklerini içerir.

  3. webpkgserver.toml uygulamasını istediğiniz bir düzenleyiciyle açın ve aşağıdaki değişiklikleri yapın:

    • #AllowTestCert = false numaralı satırı AllowTestCert = true olarak 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.PEMFile ifadesini içeren 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'den bahseden satırı değiştirmeyin. Bu farklı bir yapılandırma seçeneğidir.
    • #CertURLBase = '/webpkg/cert' numaralı satırı CertURLBase = 'data:' olarak değiştirin. CertURLBase, SXG sertifikasının sunulduğu konumu belirtir. Bu bilgiler, SXG'nin Signature üst bilgisindeki cert-url parametresini ayarlamak için kullanılır. Üretim ortamlarında CertURLBase şu şekilde kullanılır: CertURLBase = 'https://mysite.com/'. Ancak yerel testte CertURLBase = 'data:' kullanılabilir. Bu işlemle webpkgserver, cert-url alanında sertifikayı satır içi yapmak için bir veri URL'si kullanabilir. Yerel test açısından bu, SXG sertifikasını sunmanın en kolay yoludur.
    • Domain = 'example.org' satırını, sertifika oluşturduğunuz alanı yansıtacak şekilde değiştirin. Bu makaledeki talimatları kelimesi kelimesine uyguladıysanız bunu example.com olarak değiştirmeniz gerekir. webpkgserver, yalnızca webpkgserver.toml tarafından belirtilen alandan içerik getirir. webpkgserver.toml sayfasını güncellemeden farklı bir alan adından sayfa getirmeye çalışırsanız webpkgserver günlüklerinde URL doesn't match the fetch targets hata mesajı görünür.

    İsteğe bağlı

    Alt kaynak önceden yükleme özelliğini etkinleştirmek veya devre dışı bırakmak istiyorsanız aşağıdaki webpkgserver.toml yapılandırma seçenekleri uygundur:

    • Stil sayfasını ve komut dosyası alt kaynaklarını SXG olarak önceden yüklemeyle ilgili webpkgserver yönergesi eklemek için #PreloadCSS = false satırını PreloadCSS = true olarak değiştirin. Ayrıca, #PreloadJS = false satırını PreloadJS = true olarak değiştirin.

      Bu yapılandırma seçeneğinin kullanılmasına alternatif olarak, bir sayfanın HTML'sine Link: rel="preload" üst bilgilerini ve <link rel="preload"> etiketlerini manuel olarak ekleyebilirsiniz.

    • Varsayılan olarak webpkgserver, mevcut <link rel="preload"> etiketlerini bu içeriği SXG olarak getirmek için gereken eşdeğer <link> etiketleriyle değiştirir. Böylece webpkgserver, allowed-alt-sxg ve header-integrity yönergelerini gereken şekilde ayarlar. HTML yazarlarının bunları manuel olarak eklemesi gerekmez. Bu davranışı geçersiz kılmak ve SXG olmayan mevcut ön yüklemeleri korumak için #KeepNonSXGPreloads (default = false) değerini KeepNonSXGPreloads = true olarak değiştirin. Bu seçeneğin etkinleştirilmesinin, SXG'nin bu gereksinimler uyarınca Google SXG önbelleği için uygun olmamasına neden olabileceğini unutmayın.

  4. webpkgserver uygulamasını başlat.

    ./webpkgserver
    

    Sunucu başarıyla başlatıldıysa şu 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 ürününün sertifikaları önbelleğe almak için kullandığı dizin, işletim sistemine göre değişiklik gösterir.

    Bu mesajları görmüyorsanız, webpkgserver.toml numaralı telefonu tekrar kontrol etmek iyi bir ilk sorun giderme adımıdır.

    webpkgserver.toml uygulamasını güncellerseniz webpkgserver uygulamasını yeniden başlatmanız gerekir.

  5. Şu 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.pem ile ilişkili sertifika hatalarını yok sayma talimatı verir. Bu, bir test sertifikası kullanarak SXG'lerin test edilmesini mümkün kılar. Chrome bu komut olmadan başlatılırsa Geliştirici Araçları'ndan SXG'yi incelediğinizde Certificate verification error: ERR_CERT_INVALID hatası görüntülenir.

    Not:

    Bu komutu, hem makinenizdeki Chrome konumunu hem de cert.pem konumunun konumunu yansıtacak şekilde ayarlamanız gerekebilir. Bunu doğru bir şekilde yaptıysanız adres çubuğunun altında bir uyarı görüntülenir. Uyarı şuna benzer şekilde olacaktır: You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.

    Uyarı bir karma dizesi içermiyorsa SXG sertifikasının konumunu doğru şekilde belirtmemişsinizdir.

  6. Geliştirici Araçları sekmesini açıp şu URL'yi ziyaret edin: http://localhost:8080/priv/doc/https://example.com.

    Bu işlem, https://example.com içeriklerini barındıran bir SXG için http://localhost:8080 konumunda çalışan webpackager örneğine istek gönderir. /priv/doc/, webpackager tarafından kullanılan varsayılan API uç noktasıdır.

    DevTools Network sekmesinde SXG ve sertifikasını gösteren ekran görüntüsü.

    Aşağıdaki kaynaklar sekmesinde listelenmiştir:

    • signed-exchange türünde bir kaynak. Bu SXG.
    • cert-chain+cbor türünde bir kaynak. Bu, SXG sertifikasıdır. SXG sertifikaları application/cert-chain+cbor biçimini kullanmalıdır.
    • document türünde bir kaynak. Bunlar, 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.com dosyasını yeniden yüklemeyi deneyin.

    İmzalı Takas ve imzası hakkında daha fazla bilgi görmek için Preview (Önizleme) sekmesini tıklayın.

    Bir SXG&#39;yi gösteren Önizleme sekmesinin ekran görüntüsü

CanSignHttpExchanges sertifikası kullanarak imzalı takaslar sunma

Bu bölümdeki talimatlarda, CanSignHttpExchanges sertifikası kullanarak SXG'lerin nasıl sunulacağı açıklanmaktadır. SXG'lerin üretimde kullanılması için CanSignHttpExchanges sertifikası gerekir.

Örneğin kısa olması için bu talimatlar, Kendinden imzalı bir sertifika kullanarak İmzalı Değişimleri Ayarlama bölümünde ele alınan kavramları anladığınız varsayılarak yazılmıştır.

Ön koşullar

  • CanSignHttpExchanges sertifikanız var. Bu sayfada bu tür sertifikalar sunan CA'lar listelenmiştir.

  • Sertifikanız yoksa webpkg sunucunuzu CA'nızdan otomatik olarak alacak şekilde yapılandırabilirsiniz. webpkgserver.toml bölümüne gidenlerle ilgili talimatları bu sayfada bulabilirsiniz.

  • Bir zorunluluk olmasa da webpkgserver politikasını bir uç sunucunun arkasında çalıştırmanız önemle tavsiye edilir. Uç sunucusu kullanmıyorsanız webpkgserver.toml'da TLS.PEMFile ve TLS.KeyFile seçeneklerini yapılandırmanız gerekir. webpkgserver varsayılan olarak HTTP üzerinden çalışır. Ancak SXG sertifikalarının tarayıcı tarafından geçerli olarak kabul edilmesi için HTTPS üzerinden sunulması gerekir. TLS.PEMFile ve TLS.KeyFile yapılandırılması, webpkgserver ürününün HTTPS kullanmasına ve dolayısıyla SXG sertifikasını doğrudan tarayıcıya sunmasına olanak tanır.

Talimatlar

  1. Sitenizin SXG sertifikasını ve ardından sitenizin CA sertifikasını birleştirerek bir PEM dosyası oluşturun. Bu konuyla ilgili daha fazla talimatı burada bulabilirsiniz.

    PEM, birden fazla sertifikayı depolamak için yaygın olarak "kapsayıcı" olarak kullanılan bir dosya biçimidir.

  2. Örneği kopyalayarak yeni bir webpkgsever.toml dosyası oluşturun.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    
  3. webpkgserver.toml uygulamasını istediğiniz düzenleyiciyle açın ve aşağıdaki değişiklikleri yapın:

    • PEMFile = cert.pem satı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 ürününün SXG sertifikasını her 90 günde (Google için 45 günde bir) bir otomatik yenilemesi için webpkgserver.toml öğesinin [SXG.ACME] bölümündeki seçenekleri yapılandırın. Bu seçenek yalnızca DigiCert veya Google ACME hesabı kurulumuna sahip siteler için geçerlidir.
  4. Uç sunucunuzu trafiği webpkgserver örneğine yönlendirecek şekilde yapılandırın.

    webpkgserver tarafından işlenen iki birincil istek türü vardır: SXG'lere yönelik istekler (/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 bölümüne bakın.

    Not:

    Varsayılan olarak webpkgserver, SXG sertifikasını /webpkg/cert/$CERT_HASH adresinde yayınlar (örneğin, /webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY). $CERT_HASH oluş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 =