Web Paketleyici'yi kullanarak imzalı takasları (SXG'ler) nasıl yayınlayacağınızı öğrenin.
İ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
Özel anahtar oluşturun.
openssl ecparam -out priv.key -name prime256v1 -genkey
Özel anahtar,
priv.key
adlı bir dosya olarak kaydedilir.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 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ı veexample.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.
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
vecert.pem
dosyalarına ihtiyacınız olacak.
Web Paketleyici sunucusunu test için ayarlama
Ön koşullar
Web Paketleyici'yi yükleyin.
git clone https://github.com/google/webpackager.git
webpkgserver
'ü oluşturun.cd webpackager/cmd/webpkgserver go build .
webpkgserver
, Web Paketleyici projesindeki belirli bir ikili dosyadır.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
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
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'ninSignature
başlığındacert-url
parametresini ayarlamak için kullanılır. Üretim ortamlarındaCertURLBase
şu şekilde kullanılır:CertURLBase = 'https://mysite.com/'
. Ancak yerel test içinCertURLBase = '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ğerexample.com
olarak değişecektir.webpkgserver
yalnızcawebpkgserver.toml
tarafından belirtilen alandan içerik getirir.webpkgserver.toml
'yi güncellemeden farklı bir alandan sayfa getirmeye çalışırsanızwebpkgserver
günlüklerindeURL 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ındawebpkgserver
,allowed-alt-sxg
veheader-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ğeriniKeepNonSXGPreloads = 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.
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 uygulayarak
webpkgserver.toml
değerini tekrar kontrol edin.webpkgserver.toml
'ü güncellersenizwebpkgserver
'u 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
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ğindeCertificate 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.
Geliştirici Araçları Ağ 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ışanwebpackager
örneğinehttps://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.Ağ 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.
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ın 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ızwebpkgserver.toml
'deTLS.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 kabul edilmesi için HTTPS üzerinden sunulması gerekir.TLS.PEMFile
veTLS.KeyFile
yapılandırıldığındawebpkgserver
, HTTPS'yi kullanabilir ve bu nedenle SXG sertifikasını doğrudan tarayıcıya sunabilir.
Talimatlar
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.
Örneği kopyalayarak yeni bir
webpkgsever.toml
dosyası oluşturun.cp ./webpkgserver.example.toml ./webpkgserver.toml
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çinwebpkgserver.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.
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 =