Web Packager'ı kullanarak imzalı takas (SXG) sunmayı öğrenin.
İ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
Özel anahtar oluşturun.
openssl ecparam -out priv.key -name prime256v1 -genkey
Gizli anahtar,
priv.key
adında bir dosya olarak kaydedilir.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ı adexample.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.
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ıcaexample.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
vecert.pem
dosyaları bir sonraki bölümde gösterilecek.
Test için Web Packager sunucusunu kurun
Ön koşullar
Web Packager'ı yükleyin.
git clone https://github.com/google/webpackager.git
webpkgserver
oluşturun.cd webpackager/cmd/webpkgserver go build .
webpkgserver
, Web Packager projesindeki belirli bir ikili programdır.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
webpkgserver
dizinine gidin (zaten bu dizinde olabilirsiniz) dizin).cd /path/to/cmd/webpkgserver
Ö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.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ştirmeTLS.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ındaCertURLBase
kullanılır Örneğin:CertURLBase = 'https://mysite.com/'
. Ancak yerel testinde,webpkgserver
talimatı vermek içinCertURLBase = 'data:'
kullanılabilir verileri kullanmak için URL değerinicert-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 makaleexample.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ızwebpkgserver.toml
güncellenmezsewebpkgserver
günlükleriURL 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, bir
Link: 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
veheader-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.
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üncellersenizwebpkgserver
ürününü 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 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 edilirCertificate 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.
Geliştirici Araçları Ağ 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çinhttp://localhost:8080
:https://example.com
./priv/doc/
, tarafından kullanılan varsayılan API uç noktasıdırwebpackager
.Aşağıdaki kaynaklar Ağ 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.
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ızTLS.PEMFile
veTLS.KeyFile
seçenekleriniwebpkgserver.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
veTLS.KeyFile
yapılandırılması,webpkgserver
hizmetinin kullanılmasına olanak tanır Böylece SXG sertifikası doğrudan tarayıcıya sunulur.
Talimatlar
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.
Örneği kopyalayarak yeni bir
webpkgsever.toml
dosyası oluşturun.cp ./webpkgserver.example.toml ./webpkgserver.toml
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.
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 =