Web Packager kullanarak imzalı takaslar (SXG'ler) yayınlamayı öğrenin.
İ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
Özel anahtar oluşturun.
openssl ecparam -out priv.key -name prime256v1 -genkey
Özel anahtar,
priv.key
adlı bir dosya olarak kaydedilecek.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 sahipWeb 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.
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şaretindeexample.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
vecert.pem
dosyalarına ihtiyacınız olacak.
Test için Web Paketleyici sunucusunu kurma
Ön koşullar
Web Packager'ı yükleyin.
git clone https://github.com/google/webpackager.git
webpkgserver
derlemesi.cd webpackager/cmd/webpkgserver go build .
webpkgserver
, Web Packager projesindeki belirli bir ikili programdır.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
webpkgserver
dizinine gidin (zaten bu dizinde olabilirsiniz).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 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'ninSignature
üst bilgisindekicert-url
parametresini ayarlamak için kullanılır. Üretim ortamlarındaCertURLBase
şu şekilde kullanılır:CertURLBase = 'https://mysite.com/'
. Ancak yerel testteCertURLBase = 'data:'
kullanılabilir. Bu işlemlewebpkgserver
,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 bunuexample.com
olarak değiştirmeniz gerekir.webpkgserver
, yalnızcawebpkgserver.toml
tarafından belirtilen alandan içerik getirir.webpkgserver.toml
sayfasını güncellemeden farklı bir alan adından sayfa getirmeye çalışırsanızwebpkgserver
günlüklerindeURL 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öylecewebpkgserver
,allowed-alt-sxg
veheader-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ğeriniKeepNonSXGPreloads = 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.
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üncellersenizwebpkgserver
uygulamasını yeniden başlatmanız gerekir.Ş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ğinizdeCertificate 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.
Geliştirici Araçları Ağ 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çinhttp://localhost:8080
konumunda çalışanwebpackager
örneğine istek gönderir./priv/doc/
,webpackager
tarafından kullanılan varsayılan API uç noktasıdır.Aşağıdaki kaynaklar Ağ 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.
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ızwebpkgserver.toml
'daTLS.PEMFile
veTLS.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
veTLS.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
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.
Ö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ş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çinwebpkgserver.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.
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 =