Web Paketleyici'yi kullanarak İmzalı Takasları ayarlama

Web Paketleyici'yi kullanarak imzalı takasları (SXG'ler) nasıl yayınlayacağınızı öğrenin.

Katie Hempenius
Katie Hempenius

İ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

  1. Özel anahtar oluşturun.

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

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

  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 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 Demo adlı ve example.com ortak 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.

  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 1. ve 2. adımlarda oluşturulan özel anahtarı ve 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ı için nesne tanımlayıcısı'dır). Ayrıca -extfile işareti, example.com değerini özne alternatif adı olarak da tanımlar.

    cert.pem iç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.key ve cert.pem dosyalarına ihtiyacınız olacak.

Web Paketleyici sunucusunu test için ayarlama

Ön koşullar

  1. Web Paketleyici'yi yükleyin.

    git clone https://github.com/google/webpackager.git
    
  2. webpkgserver'ü oluşturun.

    cd webpackager/cmd/webpkgserver
    go build .
    

    webpkgserver, Web Paketleyici projesindeki belirli bir ikili dosyadır.

  3. webpkgserver'ün doğru şekilde yüklendiğinden emin olun.

    ./webpkgserver --help
    

    Bu komut, webpkgserver kullanı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

  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 dosyasını istediğiniz bir düzenleyicide açıp aşağıdaki değişiklikleri yapın:

    • #AllowTestCert = false satırını 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 ifadesinin 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 Signature başlığında cert-url parametresini 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-url alanı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.com olarak değiştirilir. webpkgserver yalnızca webpkgserver.toml tarafından belirtilen alandan içerik getirir. webpkgserver.toml değerini güncellemeden farklı bir alandan sayfa getirmeye çalışırsanız webpkgserver günlüklerinde URL doesn't match the fetch targets hata 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.toml yapı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 = 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ğ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-sxg ve header-integrity yö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 = true olarak değiştirin. Bu seçeneğin etkinleştirilmesinin, SXG'nin bu şartlar uyarınca Google SXG önbelleği için uygunluğunu etkileyebileceğini unutmayın.

  4. 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.

  5. 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.pem ile 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_INVALID hatası 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.

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

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

    Bir SXG&#39;yi ve sertifikasını gösteren DevTools Ağ sekmesinin ekran görüntüsü.

    sekmesinde aşağıdaki kaynaklar listelenir:

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

    İmzalı Exchange ve imzası hakkında daha fazla bilgi edinmek için Önizleme sekmesini tıklayın.

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

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

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

  • Sertifikanız yoksa webpkgserver'ınızı, CA'nızdan otomatik olarak sertifika alacak şekilde yapılandırabilirsiniz. webpkgserver.toml alanı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.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 kabul edilmesi için HTTPS üzerinden sunulması gerekir. TLS.PEMFile ve TLS.KeyFile yapılandırıldığında webpkgserver, HTTPS'yi kullanabilir ve bu nedenle SXG sertifikasını doğrudan tarayıcıya sunabilir.

Talimatlar

  1. 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.

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

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    
  3. webpkgserver.toml dosyasını istediğiniz düzenleyicide açıp 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'in SXG sertifikasını 90 günde bir (Google için 45 günde bir) otomatik olarak yenilemesi için webpkgserver.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.
  4. Kenar sunucunuzu, trafiği webpkgserver örneğine yönlendirecek şekilde yapılandırın.

    webpkgserver tarafı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_HASH adresinde sunar (ör. /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 =