Dowiedz się, jak wyświetlać strony w technologii Signed Exchange (SXG) za pomocą systemu zarządzania pakietami internetowymi.
Signed Exchange (SXG) to mechanizm dostarczania, który umożliwia uwierzytelnianie pochodzenia zasobu niezależnie od sposobu jego dostarczenia.
Z tych instrukcji dowiesz się, jak skonfigurować strony w technologii Signed Exchange za pomocą Web Packager. Zawiera on instrukcje dotyczące zarówno certyfikatów podpisanych samodzielnie, jak i CanSignHttpExchanges.
Wyświetlanie SXG za pomocą certyfikatu podpisanego samodzielnie
Korzystanie z certyfikatu z podpisem własnym do obsługi SXG jest używane głównie do celów demonstracyjnych i testowania. SXG podpisane samodzielnie wygenerują komunikaty o błędach w przeglądarce, gdy będą używane poza środowiskami testowymi, i nie powinny być wyświetlane robotom.
Wymagania wstępne
Aby wykonać te instrukcje, musisz mieć zainstalowane w środowisku programistycznym narzędzia openssl i Go.
Generowanie samodzielnie podpisanego certyfikatu
Z tej sekcji dowiesz się, jak wygenerować samopodpisane certyfikaty, które można używać z wymianami podpisanymi.
Instrukcje
Wygeneruj klucz prywatny.
openssl ecparam -out priv.key -name prime256v1 -genkeyKlucz prywatny zostanie zapisany jako plik o nazwie
priv.key.Utwórz żądanie podpisania certyfikatu (CSR).
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'Żądanie podpisania certyfikatu to blok zakodowanego tekstu, który zawiera informacje potrzebne do złożenia prośby o certyfikat do urzędu certyfikacji(CA). Chociaż nie będziesz prosić urzędu certyfikacji o certyfikat, musisz utworzyć żądanie podpisania certyfikatu.
Powyższe polecenie tworzy żądanie podpisania certyfikatu dla organizacji o nazwie
Web Packager Demo, która ma wspólną nazwęexample.com. Wspólna nazwa powinna być pełną i jednoznaczną nazwą domeny witryny zawierającej treści, które chcesz spakować jako SXG.W produkcyjnej konfiguracji SXG jest to witryna, która należy do Ciebie. Jednak w środowisku testowym, takim jak opisane w tych instrukcjach, może to być dowolna witryna.
Utwórz certyfikat z rozszerzeniem
CanSignHttpExchanges.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")To polecenie używa klucza prywatnego i żądania podpisania certyfikatu (CSR) utworzonego w kroku 1 i 2, aby utworzyć plik certyfikatu
cert.pem. Flaga-extfilełączy certyfikat z rozszerzeniem certyfikatuCanSignHttpExchanges(1.3.6.1.4.1.11129.2.1.22to identyfikator obiektu rozszerzeniaCanSignHttpExchanges). Dodatkowo flaga-extfiledefiniujeexample.comjako nazwa alternatywna podmiotu.Jeśli chcesz sprawdzić zawartość pliku
cert.pem, możesz to zrobić za pomocą tego polecenia:openssl x509 -in cert.pem -noout -textUtworzono klucze prywatne i certyfikaty. W następnej sekcji będziesz potrzebować plików
priv.keyicert.pem.
Konfigurowanie serwera Web Packager na potrzeby testowania
Wymagania wstępne
Zainstaluj Web Packager.
git clone https://github.com/google/webpackager.gitKompilacja
webpkgserver.cd webpackager/cmd/webpkgserver go build .webpkgserverto konkretny plik binarny w projekcie Web Packager.Sprawdź, czy aplikacja
webpkgserverzostała prawidłowo zainstalowana../webpkgserver --helpTo polecenie powinno zwrócić informacje o użyciu
webpkgserver. Jeśli to nie zadziała, pierwszym krokiem w rozwiązywaniu problemu powinno być sprawdzenie, czy zmienna GOPATH jest prawidłowo skonfigurowana.
Instrukcje
Przejdź do katalogu
webpkgserver(być może jesteś już w tym katalogu).cd /path/to/cmd/webpkgserverUtwórz plik
webpkgsever.toml, kopiując przykład.cp ./webpkgserver.example.toml ./webpkgserver.tomlTen plik zawiera opcje konfiguracji
webpkgserver.Otwórz plik
webpkgserver.tomlw dowolnym edytorze i wprowadź te zmiany:- Zmień linię
#AllowTestCert = falsenaAllowTestCert = true. - Zmień wiersz
PEMFile = 'path/to/your.pem', aby odzwierciedlał ścieżkę do utworzonego przez Ciebie certyfikatu PEMcert.pem. Nie zmieniaj wiersza zawierającegoTLS.PEMFile– to inna opcja konfiguracji. - Zmień linię
KeyFile = 'priv.key', aby odzwierciedlała ścieżkę utworzonego przez Ciebie klucza prywatnegopriv.key. Nie zmieniaj wiersza z wartościąTLS.KeyFile– to inna opcja konfiguracji. - Zmień linię
#CertURLBase = '/webpkg/cert'naCertURLBase = 'data:'.CertURLBasewskazuje lokalizację wyświetlania certyfikatu SXG. Te informacje służą do ustawienia parametrucert-urlw nagłówku SXG (Signature). W środowiskach produkcyjnychCertURLBasejest używany w ten sposób:CertURLBase = 'https://mysite.com/'. Jednak na potrzeby testowania lokalnego można użyć elementuCertURLBase = 'data:', aby polecić elementowiwebpkgserverużycie adresu URL danych w celu umieszczenia certyfikatu w polucert-url. W przypadku testów lokalnych jest to najwygodniejszy sposób udostępniania certyfikatu SXG. - Zmień wiersz
Domain = 'example.org', aby odzwierciedlał domenę, dla której został utworzony certyfikat. Jeśli instrukcje w tym artykule zostały wykonane dokładnie, wartość ta powinna być równaexample.com.webpkgserverbędzie pobierać treści tylko z domeny wskazanej przezwebpkgserver.toml. Jeśli spróbujesz pobrać strony z innej domeny bez aktualizowania plikuwebpkgserver.toml, w logachwebpkgserverpojawi się komunikat o błędzieURL doesn't match the fetch targets.
Opcjonalny
Jeśli chcesz włączyć lub wyłączyć wstępne pobieranie zasobów podrzędnych, możesz użyć tych opcji konfiguracji:
webpkgserver.tomlAby
webpkgserverwstawiała dyrektywy dotyczące wstępnego wczytania szablonu i podzasobów skryptu jako SXG, zmień wiersz#PreloadCSS = falsenaPreloadCSS = true. Dodatkowo zmień wiersz#PreloadJS = falsenaPreloadJS = true.Zamiast tej opcji konfiguracji możesz ręcznie dodać nagłówki
Link: rel="preload"i tagi<link rel="preload">do kodu HTML strony.Domyślnie tag
webpkgserverzastępuje istniejące tagi<link rel="preload">równoważnymi tagami<link>, które są potrzebne do pobierania tych treści w formacie SXG. W tym celuwebpkgserverustawia dyrektywyallowed-alt-sxgiheader-integrityodpowiednio do potrzeb. Autorzy kodu HTML nie muszą dodawać ich ręcznie. Aby zignorować to zachowanie i zachować istniejące wstępne załadowania, które nie są związane z SXG, zmień wartość parametru#KeepNonSXGPreloads (default = false)naKeepNonSXGPreloads = true. Pamiętaj, że włączenie tej opcji może spowodować, że SXG nie będzie kwalifikować się do umieszczenia w pamięci podręcznej Google SXG zgodnie z tymi wymaganiami.
- Zmień linię
Rozpocznij
webpkgserver../webpkgserverJeśli serwer został uruchomiony, powinieneś zobaczyć te komunikaty w dzienniku:
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkgKomunikaty logowania mogą wyglądać nieco inaczej. W szczególności katalog, którego
webpkgserverużywa do przechowywania w pamięci podręcznej certyfikatów, różni się w zależności od systemu operacyjnego.Jeśli nie widzisz tych komunikatów, pierwszym krokiem rozwiązywania problemów jest ponowne sprawdzenie
webpkgserver.toml.Jeśli zaktualizujesz
webpkgserver.toml, musisz ponownie uruchomićwebpkgserver.Uruchom Chrome za pomocą tego polecenia:
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`To polecenie instruuje Chrome, aby zignorował błędy certyfikatu związane z
cert.pem. Umożliwia to testowanie SXG za pomocą certyfikatu testowego. Jeśli Chrome zostanie uruchomiony bez tego polecenia, podczas sprawdzania SXG w Narzędziach deweloperskich pojawi się błądCertificate verification error: ERR_CERT_INVALID.Uwaga:
Może być konieczne dostosowanie tego polecenia, aby odzwierciedlało lokalizację Chrome na Twoim komputerze oraz lokalizację
cert.pem. Jeśli wszystko przebiegnie prawidłowo, pod paskiem adresu powinno pojawić się ostrzeżenie. Ostrzeżenie powinno wyglądać tak:You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.Jeśli ostrzeżenie nie zawiera ciągu haszowania, nieprawidłowo wskazano lokalizację certyfikatu SXG.
Otwórz kartę Sieć w Narzędziach deweloperskich, a następnie otwórz adres URL
http://localhost:8080/priv/doc/https://example.com.Wysyła żądanie do instancji
webpackageruruchomionej pod adresemhttp://localhost:8080w celu pobrania SXG zawierającego zawartośćhttps://example.com./priv/doc/to domyślny punkt końcowy interfejsu API używany przezwebpackager.
Na karcie Sieć znajdziesz te zasoby:
- Zasób typu
signed-exchange. To jest SXG. - Zasób typu
cert-chain+cbor. To jest certyfikat SXG. Certyfikaty SXG muszą mieć formatapplication/cert-chain+cbor. - Zasób typu
document. To są treści dostarczone za pomocą SXG.
Jeśli nie widzisz tych zasobów, wyczyść pamięć podręczną przeglądarki, a następnie przeładuj
http://localhost:8080/priv/doc/https://example.com.Aby wyświetlić więcej informacji o podpisanym wymianie i jej podpisie, kliknij kartę Podgląd.

- Zasób typu
Wyświetlanie wymian podpisanych za pomocą certyfikatu CanSignHttpExchanges
Z instrukcji w tej sekcji dowiesz się, jak wyświetlać pliki SXG przy użyciu certyfikatu CanSignHttpExchanges. Korzystanie z SXG w produkcji wymaga posiadania certyfikatu CanSignHttpExchanges.
Aby skrócić te instrukcje, zakładamy, że rozumiesz pojęcia omówione w sekcji Konfigurowanie Signed Exchange za pomocą samodzielnie podpisanego certyfikatu.
Wymagania wstępne
Masz certyfikat
CanSignHttpExchanges. Na tej stronie znajdziesz listę urzędów certyfikacji, które oferują ten typ certyfikatu.Jeśli nie masz certyfikatu, możesz skonfigurować serwer webpkgserver tak, aby automatycznie pobierał certyfikaty z urzędu certyfikacji. Możesz postępować zgodnie z instrukcjami dotyczącymi tego, co należy umieścić w sekcji
webpkgserver.toml, podanymi na tej stronie.Chociaż nie jest to wymagane, zdecydowanie zalecamy uruchamianie
webpkgserverza pomocą serwera peryferyjnego. Jeśli nie używasz serwera brzegowego, musisz skonfigurować opcjeTLS.PEMFileiTLS.KeyFilewwebpkgserver.toml. Domyślniewebpkgserverdziała przez HTTP. Aby przeglądarka uznała certyfikaty SXG za ważne, muszą one być jednak udostępniane przez protokół HTTPS. KonfiguracjaTLS.PEMFileiTLS.KeyFileumożliwiawebpkgserverkorzystanie z HTTPS, a tym samym wyświetlanie certyfikatu SXG bezpośrednio w przeglądarce.
Instrukcje
Utwórz plik PEM, łącząc certyfikat SXG witryny z certyfikatem CA witryny. Więcej instrukcji znajdziesz tutaj.
PEM to format pliku, który jest często używany jako „kontener” do przechowywania wielu certyfikatów.
Utwórz nowy plik
webpkgsever.toml, kopiując przykład.cp ./webpkgserver.example.toml ./webpkgserver.tomlOtwórz plik
webpkgserver.tomlw wybranym edytorze i wprowadź te zmiany:- Zmień wiersz
PEMFile = cert.pem, aby odzwierciedlał lokalizację pliku PEM zawierającego pełny łańcuch certyfikatów. - Zmień wiersz
KeyFile = 'priv.key', aby odpowiadał lokalizacji klucza prywatnego odpowiadającego plikowi PEM. - Zmień wiersz
Domain = 'example.org', aby pasował do Twojej witryny. - (Opcjonalnie) Aby certyfikat SXG był automatycznie odnawiany co 90 dni (45 dni w przypadku Google), skonfiguruj opcje w sekcji
[SXG.ACME]wwebpkgserver.toml.webpkgserverTa opcja dotyczy tylko witryn z ustawionym kontem DigiCert lub Google ACME.
- Zmień wiersz
Skonfiguruj serwer peryferyjny tak, aby przekierowywał ruch do instancji
webpkgserver.webpkgserverobsługuje 2 główne typy żądań: żądania SXG (które są obsługiwane przez punkt końcowy/priv/doc/) i żądania certyfikatu SXG (które są obsługiwane przez punkt końcowy/webpkg/cert/). Zasady przekształcania adresów URL w przypadku każdego z tych typów żądań różnią się nieznacznie. Więcej informacji znajdziesz w artykule Uruchamianie usługi na serwerze front-endu.Uwaga:
Domyślnie
webpkgserverudostępnia certyfikat SXG pod adresem/webpkg/cert/$CERT_HASH, np./webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY. Aby wygenerować$CERT_HASH, uruchom to polecenie:shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =