Web Paketleyici'yi kullanarak İmzalı Takasları ayarlama

Web Packager'ı kullanarak imzalı takas (SXG) sunmayı öğrenin.

Katie Hempenius
Katie Hempenius

İmzalı değişim (SXG), müşterinin nasıl teslim edildiğinden bağımsız olarak kaynağın kimliğini doğrulamak mümkün değildir. Aşağıdaki talimatlar, Web Packager. Şunlarla ilgili talimatlar yer almaktadır: hem kendinden imzalı hem de CanSignHttpExchanges sertifika.

SXG'leri kendinden imzalı bir sertifika kullanarak sunma

SXG'leri sunmak için kendinden imzalı bir sertifikanın kullanılması birincil olarak çok önemlidir. Kendinden imzalı sertifikayla imzalanmış SXG'ler test dışında kullanıldığında tarayıcıda hata mesajları oluşturur ortamlarda ve tarayıcılara sunulmamalıdır.

Ön koşullar

Bu talimatları uygulamak için openssl ve Geliştirme ortamınızda Go yüklü olmalıdır.

Kendinden imzalı sertifika oluşturma

Bu bölümde, sertifika alabilmek için kendinden imzalı sertifikanın nasıl İmzalı takaslarda kullanılır.

Talimatlar

  1. Özel anahtar oluşturun.

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

    Gizli anahtar, priv.key adında bir dosya olarak kaydedilir.

  2. Sertifika imzalaması oluşturma istekte bulunabilirsiniz (CSR).

    openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
    

    Sertifika imzalama isteği, sertifika yetkilisinden(CA) sertifika istemek için gereken bilgileri içerir. Bir sertifika yetkilisinden sertifika istemeyecek olsanız da, bir sertifika imzalama isteği oluşturmak hâlâ gereklidir.

    Yukarıdaki komut, bir kuruluş için sertifika imzalama isteği oluşturur ortak olan Web Packager Demo adlı ad example.com. İlgili içeriği oluşturmak için kullanılan ortak ad, alan adını içeren sitenin tam alan adı olmalıdır. SXG olarak paketlemek istediğiniz içeriği seçin.

    Üretim SXG kurulumunda bu, sahibi olduğunuz bir site olacaktır. Ancak bu talimatlarda açıklanana benzer bir test ortamından başka bir şey girin.

  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ı. -extfile işareti, sertifikayı CanSignHttpExchanges sertifika uzantısı (1.3.6.1.4.1.11129.2.1.22 nesne tanımlayıcı (CanSignHttpExchanges uzantısı için). Ayrıca -extfile işareti ayrıca example.com öğesini bir Konu Alternatifi olarak tanımlıyor Ad.

    cert.pem içeriğini merak ediyorsanız şu komutu kullanın:

    openssl x509 -in cert.pem -noout -text
    

    Özel anahtar ve sertifika oluşturmayı tamamladınız. Şunlara ihtiyacınız olacaktır: priv.key ve cert.pem dosyaları bir sonraki bölümde gösterilecek.

Test için Web Packager sunucusunu kurun

Ön koşullar

  1. Web Packager'ı yükleyin.

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

    cd webpackager/cmd/webpkgserver
    go build .
    

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

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

    ./webpkgserver --help
    

    Bu komut, webpkgserver kullanımıyla ilgili bilgileri döndürecektir. Eğer işe yaramıyorsa, ilk olarak sorun giderme adımı olarak GOPATH yapılandırıldı sağlayabilir.

Talimatlar

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

    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 işlemleri yapın değişiklikler:

    • #AllowTestCert = false satırını AllowTestCert = true olarak değiştirin.
    • PEMFile = 'path/to/your.pem' satırını, bulunduğumuz yere giden yolu yansıtacak şekilde değiştirin oluşturduğunuz PEM sertifikasını (cert.pem) tıklayın. TLS.PEMFile ifadesini içeren bir satır görünür. Bu farklı bir yapılandırma seçeneğidir.
    • KeyFile = 'priv.key' satırını, grafiğin yolunu yansıtacak şekilde değiştirin özel anahtara (priv.key) bakın. Satırı değiştirme TLS.KeyFile ile ilgiliyse bu farklı bir yapılandırma seçeneğidir.
    • #CertURLBase = '/webpkg/cert' satırını CertURLBase = 'data:' olarak değiştirin. CertURLBase, SXG'nin yayın konumunu belirtir sertifikası. Bu bilgi, cert-url parametresini "the" Signature başlığını görebilirsiniz. Üretim ortamlarında CertURLBase kullanılır Örneğin: CertURLBase = 'https://mysite.com/'. Ancak yerel testinde, webpkgserver talimatı vermek için CertURLBase = 'data:' kullanılabilir verileri kullanmak için URL değerini cert-url alanında satır içine alın. Yerel test için bu, SXG sertifikasını sunmanın en kolay yoludur.
    • Domain = 'example.org' satırını, geliştirdiğiniz alan adını yansıtacak şekilde değiştirin. , için sertifika oluşturdu. Bu bu makale example.com olarak değiştirilmelidir. webpkgserver, yalnızca şunun belirtilen alan adındaki içeriği getirecektir: webpkgserver.toml. Farklı bir alandan sayfa getirmeye çalışırsanız webpkgserver.toml güncellenmezse webpkgserver günlükleri URL doesn't match the fetch targets hata mesajı.

    İsteğe bağlı

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

    • Stil sayfasını önceden yüklemek için webpkgserver ek yönergelerinin olmasını sağlamak için ve alt kaynakları SXG olarak komut dosyası olarak kullanıyorsanız #PreloadCSS = false satırını değiştirin. alıcı: PreloadCSS = true. Ayrıca, #PreloadJS = false satırını PreloadJS = true olarak değiştirin.

      Bu yapılandırma seçeneğini kullanmaya alternatif olarak, birLink: rel="preload"<link rel="preload"> sayfanızın HTML'sini oluşturun.

    • Varsayılan olarak webpkgserver, mevcut <link rel="preload"> etiketlerinin yerini alır Bu içeriği getirmek için gereken eşdeğer <link> etiketleriyle SXG Bu işlemle, webpkgserver allowed-alt-sxg ve header-integrity yönergeleri gerektiği gibi eklemelidir: HTML yazarlarının bunları elle eklemesi gerekmez. Alıcı: bu davranışı geçersiz kılın ve SXG olmayan mevcut önceden yüklemeleri koruyun, #KeepNonSXGPreloads (default = false) - KeepNonSXGPreloads = true. Bu seçenek etkinleştirildiğinde SXG'nin Google SXG önbelleğinin tamamını şartları inceleyin.

  4. webpkgserver antrenmanını başlatın.

    ./webpkgserver
    

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

    Bu iletileri görmüyorsanız öncelikle sorun giderme adımlarını uygulayın. webpkgserver.toml öğesini tekrar kontrol etmektir.

    webpkgserver.toml uygulamasını güncellerseniz webpkgserver ürününü 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 ilişkili sertifika hatalarını yoksayma talimatı verir cert.pem ile birlikte. Bu sayede, test kullanarak SXG'leri test edebilirsiniz. sertifikası. Chrome bu komut olmadan başlatılırsa SXG kontrol edilir Certificate verification error: ERR_CERT_INVALID hatası gösterilir.

    Not:

    Bu komutu, kullandığınız Chrome'un konumunu yansıtacak şekilde ayarlamanız gerekebilir. ve cert.pem cihazın konumuna bakabilirsiniz. Bu doğru şekilde durdurursanız adres çubuğunun altında bir uyarı görürsünüz. İlgili içeriği oluşturmak için kullanılan uyarı şuna benzer olmalıdı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 yerini belirtmelidir.

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

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

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

    Aşağıdaki kaynaklar sekmesinde listelenir:

    • 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. Bu, SXG aracılığıyla gönderilen içeriktir.

    Bu kaynakları görmüyorsanız tarayıcı önbelleğini temizlemeyi ve ardından http://localhost:8080/priv/doc/https://example.com yeniden yükleniyor.

    İmzalı Değişim hakkında daha fazla bilgi için Önizleme sekmesini tıklayın imzası var.

    SXG gösteren Önizleme sekmesinin ekran görüntüsü

CanSignHttpExchanges sertifikası kullanarak imzalı exchange'ler sunun

Bu bölümdeki talimatlarda, CanSignHttpExchanges sertifikası. SXG'lerin üretim kullanımı için bir CanSignHttpExchanges sertifikası.

Örneğin kısa tutmak adına, bu talimatların İmzalı Takasları Ayarlama kendinden imzalı bir sertifika bölümüne ekleyin.

Ön koşullar

  • CanSignHttpExchanges sertifikanız var. Bu sayfası bu sertifika türünü sunan CA'ları listeler.

  • Sertifikanız yoksa webpkgserver'ınızı şu şekilde yapılandırabilirsiniz: Sertifikaları otomatik olarak CA'nızdan alabilir. Web sitemiz g.co/newsinitiative/labs üzerinden webpkgserver.toml içinde gidenlere ilişkin yol tarifi sayfasını inceleyin.

  • Bir zorunluluk olmasa da, Bir uç sunucunun arkasında webpkgserver. Uç sunucu kullanmıyorsanız TLS.PEMFile ve TLS.KeyFile seçeneklerini webpkgserver.toml. webpkgserver varsayılan olarak HTTP üzerinden çalışır. Ancak SXG sertifikaları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 hizmetinin kullanılmasına olanak tanır Böylece SXG sertifikası doğrudan tarayıcıya sunulur.

Talimatlar

  1. Sitenizin SXG sertifikasını, ardından aşağıdaki kodu birleştirerek bir PEM dosyası oluşturun CA sertifikasını gözden geçirin. Bu konuyla ilgili daha fazla talimat bulabilirsiniz burada bulabilirsiniz.

    PEM Genellikle "kapsayıcı" olarak kullanılan bir dosya biçimi depolama için birden fazla ekleyebilirsiniz.

  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şiklikler:

    • PEMFile = cert.pem satırını PEM'in konumunu yansıtacak şekilde değiştirin tam sertifika zincirinizi içeren bir dosya yükleyin.
    • KeyFile = 'priv.key' satırını, sitenin konumunu yansıtacak şekilde değiştirin özel anahtarı kullanabilirsiniz.
    • Domain = 'example.org' satırını, sitenizi yansıtacak şekilde değiştirin.
    • (İsteğe bağlı) webpkgserver adlı kullanıcının SXG sertifikasını otomatik olarak yenilemesini sağlamak için: 90 gün (Google için 45 gün), Google Ads'in [SXG.ACME] bölümündeki seçenekleri yapılandırın. webpkgserver.toml. Bu seçenek yalnızca DigiCert sahibi siteler için geçerlidir veya Google ACME hesap kurulumu.
  4. Uç sunucunuzu, trafiği webpkgserver adresine yönlendirecek şekilde yapılandırın kullanır.

    webpkgserver tarafından işlenen iki birincil istek türü vardır: istekler /priv/doc/ uç noktası tarafından sunulan SXG'ler ve SXG sertifikası (/webpkg/cert/ uç noktası tarafından sunulur). İlgili içeriği oluşturmak için kullanılan Bu istek türlerinin her biri için URL yeniden yazma kuralları biraz farklılık gösterir. Örneğin, daha fazla bilgi için Ön uç kenarının arkasında çalıştırma konusuna bakın sunucu değerleridir.

    Not:

    Varsayılan olarak webpkgserver, SXG sertifikasını şurada sunar: /webpkg/cert/$CERT_HASH - ö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 =