Hier erfahren Sie, wie Sie Signed Exchanges (SXGs) mit Web Packager bereitstellen.
Ein Signed Exchange-Paket (SXG) ist ein Übermittlungsmechanismus, der es ermöglicht, den Ursprung einer Ressource unabhängig von der Art der Übermittlung zu authentifizieren.
In der folgenden Anleitung wird erläutert, wie Sie Signed Exchanges mit Web Packager einrichten. Anleitungen sind sowohl für selbst signierte Zertifikate als auch für CanSignHttpExchanges
-Zertifikate enthalten.
SXGs mit einem selbst signierten Zertifikat bereitstellen
Die Verwendung eines selbst signierten Zertifikats zur Bereitstellung von SXGs dient hauptsächlich zu Demonstrations- und Testzwecken. SXGs, die mit einem selbst signierten Zertifikat signiert sind, generieren im Browser Fehlermeldungen, wenn sie außerhalb von Testumgebungen verwendet werden, und sollten Crawlern nicht angezeigt werden.
Voraussetzungen
Damit Sie dieser Anleitung folgen können, müssen openssl und Go in Ihrer Entwicklungsumgebung installiert sein.
Selbst signiertes Zertifikat generieren
In diesem Abschnitt wird erläutert, wie Sie ein selbst signiertes Zertifikat generieren, das mit Signed Exchanges verwendet werden kann.
Anleitung
Generieren Sie einen privaten Schlüssel.
openssl ecparam -out priv.key -name prime256v1 -genkey
Der private Schlüssel wird als Datei mit dem Namen
priv.key
gespeichert.Erstellen Sie eine Anfrage zur Signierung des Zertifikats (Certificate Signing Request, CSR).
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
Eine Zertifikatssignieranfrage ist ein Block mit codiertem Text, der die erforderlichen Informationen enthält, um ein Zertifikat von einer Zertifizierungsstelle anzufordern. Sie werden zwar kein Zertifikat von einer Zertifizierungsstelle anfordern, müssen aber eine Anfrage zur Zertifikatsignierung stellen.
Mit dem obigen Befehl wird eine Anfrage zur Zertifikatsignierung für eine Organisation namens
Web Packager Demo
mit dem allgemeinen Namenexample.com
erstellt. Der allgemeine Name sollte der voll qualifizierte Domainname der Website sein, die den Inhalt enthält, den du als SXG packen möchtest.Bei einer SXG-Produktionsversion ist das eine Website, deren Inhaber du bist. In einer Testumgebung, wie in dieser Anleitung beschrieben, kann es sich jedoch um einen beliebigen Standort handeln.
Erstellen Sie ein Zertifikat mit der Erweiterung
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")
Dieser Befehl verwendet den privaten Schlüssel und die in den Schritten 1 und 2 erstellte CSR, um die Zertifikatsdatei
cert.pem
zu erstellen. Das Flag-extfile
verknüpft das Zertifikat mit der ZertifikatserweiterungCanSignHttpExchanges
(1.3.6.1.4.1.11129.2.1.22
ist die Objekt-ID für die ErweiterungCanSignHttpExchanges
). Außerdem definiert das Flag-extfile
auchexample.com
als alternativen Namen.Wenn Sie mehr über den Inhalt von
cert.pem
erfahren möchten, können Sie ihn mit dem folgenden Befehl aufrufen:openssl x509 -in cert.pem -noout -text
Sie haben die privaten Schlüssel und Zertifikate erstellt. Sie benötigen die Dateien
priv.key
undcert.pem
im nächsten Abschnitt.
Web Packager-Server zum Testen einrichten
Voraussetzungen
Installieren Sie Web Packager.
git clone https://github.com/google/webpackager.git
webpkgserver
erstellen.cd webpackager/cmd/webpkgserver go build .
webpkgserver
ist eine spezifische Binärdatei im Web Packager-Projekt.Prüfe, ob
webpkgserver
richtig installiert wurde../webpkgserver --help
Mit diesem Befehl sollten Informationen zur Verwendung von
webpkgserver
zurückgegeben werden. Sollte dies nicht funktionieren, sollten Sie zuerst überprüfen, ob Ihr GOPATH richtig konfiguriert ist.
Anleitung
Wechseln Sie zum Verzeichnis
webpkgserver
. Sie befinden sich möglicherweise bereits in diesem Verzeichnis.cd /path/to/cmd/webpkgserver
Erstellen Sie durch Kopieren des Beispiels eine
webpkgsever.toml
-Datei.cp ./webpkgserver.example.toml ./webpkgserver.toml
Diese Datei enthält die Konfigurationsoptionen für
webpkgserver
.Öffnen Sie
webpkgserver.toml
mit einem Editor Ihrer Wahl und nehmen Sie die folgenden Änderungen vor:- Ändern Sie die Zeile
#AllowTestCert = false
inAllowTestCert = true
. - Ändern Sie die Zeile
PEMFile = 'path/to/your.pem'
so, dass sie den Pfad zum PEM-Zertifikatcert.pem
widerspiegelt, das Sie erstellt haben. Ändern Sie nicht die Zeile mitTLS.PEMFile
– dies ist eine andere Konfigurationsoption. - Ändern Sie die Zeile
KeyFile = 'priv.key'
so, dass sie dem Pfad des privaten Schlüsselspriv.key
entspricht, den Sie erstellt haben. Ändern Sie nicht die Zeile mitTLS.KeyFile
, da dies eine andere Konfigurationsoption ist. - Ändern Sie die Zeile
#CertURLBase = '/webpkg/cert'
inCertURLBase = 'data:'
.CertURLBase
gibt den Bereitstellungsort des SXG-Zertifikats an. Mit diesen Informationen wird der Parametercert-url
im HeaderSignature
des SXG festgelegt. In Produktionsumgebungen wirdCertURLBase
so verwendet:CertURLBase = 'https://mysite.com/'
. Für lokale Tests kannCertURLBase = 'data:'
jedoch verwendet werden, umwebpkgserver
anzuweisen, eine Daten-URL zu verwenden, um das Zertifikat im Feldcert-url
einzufügen. Für lokale Tests ist dies die gängigste Methode, um das SXG-Zertifikat bereitzustellen. - Ändern Sie die Zeile
Domain = 'example.org'
so, dass sie die Domain widerspiegelt, für die Sie ein Zertifikat erstellt haben. Wenn Sie der Anleitung in diesem Artikel wortgetreu gefolgt sind, sollte dies inexample.com
geändert werden.webpkgserver
ruft nur Inhalte von der Domain ab, die durchwebpkgserver.toml
angegeben ist. Wenn Sie versuchen, Seiten aus einer anderen Domain abzurufen, ohnewebpkgserver.toml
zu aktualisieren, wird in denwebpkgserver
-Logs die FehlermeldungURL doesn't match the fetch targets
angezeigt.
Optional
Wenn Sie das Vorabladen von Unterressourcen aktivieren oder deaktivieren möchten, sind die folgenden
webpkgserver.toml
-Konfigurationsoptionen relevant:Wenn Sie
webpkgserver
-Einfügeanweisungen zum Vorabladen von Stylesheet- und Skript-Unterressourcen als SXGs haben möchten, ändern Sie die Zeile#PreloadCSS = false
inPreloadCSS = true
. Ändern Sie außerdem die Zeile#PreloadJS = false
inPreloadJS = true
.Als Alternative zu dieser Konfigurationsoption kannst du
Link: rel="preload"
-Header und<link rel="preload">
-Tags manuell in den HTML-Code einer Seite einfügen.Standardmäßig ersetzt
webpkgserver
vorhandene<link rel="preload">
-Tags durch die entsprechenden<link>
-Tags, die zum Abrufen dieses Inhalts als SXG erforderlich sind. Dabei legtwebpkgserver
die Anweisungenallowed-alt-sxg
undheader-integrity
nach Bedarf fest. HTML-Autoren müssen diese nicht manuell hinzufügen. Wenn Sie dieses Verhalten überschreiben und vorhandene Nicht-SXG-Vorabladevorgänge beibehalten möchten, ändern Sie#KeepNonSXGPreloads (default = false)
inKeepNonSXGPreloads = true
. Hinweis: Wenn du diese Option aktivierst, kann der SXG den Google-SXG-Cache gemäß diesen Anforderungen möglicherweise nicht verwenden.
- Ändern Sie die Zeile
Starten Sie
webpkgserver
../webpkgserver
Wenn der Server erfolgreich gestartet wurde, sollten Sie die folgenden Logmeldungen sehen:
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkg
Ihre Logeinträge sehen möglicherweise etwas anders aus. Insbesondere das Verzeichnis, das
webpkgserver
zum Speichern von Zertifikaten im Cache verwendet, variiert je nach Betriebssystem.Wenn diese Meldungen nicht angezeigt werden, prüfen Sie zuerst
webpkgserver.toml
noch einmal zur Fehlerbehebung.Wenn du
webpkgserver.toml
aktualisierst, musst duwebpkgserver
neu starten.Starten Sie Chrome mit dem folgenden Befehl:
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`
Mit diesem Befehl wird Chrome angewiesen, die Zertifikatsfehler im Zusammenhang mit
cert.pem
zu ignorieren. So ist es möglich, SXGs mit einem Testzertifikat zu testen. Wenn Chrome ohne diesen Befehl gestartet wird, wird bei der Prüfung der SXG in den Entwicklertools der FehlerCertificate verification error: ERR_CERT_INVALID
angezeigt.Hinweis:
Möglicherweise müssen Sie diesen Befehl anpassen, um den Speicherort von Chrome auf Ihrem Computer und den Speicherort von
cert.pem
anzugeben. Wenn Sie dies richtig gemacht haben, sollte unter der Adressleiste eine Warnung angezeigt werden. Die Warnung sollte in etwa so aussehen:You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.
Wenn die Warnung keinen Hashstring enthält, haben Sie den Speicherort des SXG-Zertifikats nicht richtig angegeben.
Öffne in den Entwicklertools den Tab Netzwerk und rufe dann die folgende URL auf:
http://localhost:8080/priv/doc/https://example.com
.Dadurch wird eine Anfrage an die
webpackager
-Instanz, die unterhttp://localhost:8080
ausgeführt wird, für einen SXG mit dem Inhalt vonhttps://example.com
gestellt./priv/doc/
ist der vonwebpackager
verwendete Standard-API-Endpunkt.Die folgenden Ressourcen werden auf dem Tab Network aufgeführt:
- Eine Ressource vom Typ
signed-exchange
. Das ist der SXG. - Eine Ressource vom Typ
cert-chain+cbor
. Dies ist das SXG-Zertifikat. SXG-Zertifikate müssen das Formatapplication/cert-chain+cbor
haben. - Eine Ressource vom Typ
document
. Diese Inhalte wurden über SXG bereitgestellt.
Wenn Sie diese Ressourcen nicht sehen, leeren Sie den Browser-Cache und laden Sie
http://localhost:8080/priv/doc/https://example.com
neu.Klicken Sie auf den Tab Vorschau, um weitere Informationen zu Signed Exchange und seiner Signatur zu erhalten.
- Eine Ressource vom Typ
Signed Exchange-Anzeigen mit einem CanSignHttpExchanges
-Zertifikat bereitstellen
In diesem Abschnitt wird erläutert, wie SXGs mit einem CanSignHttpExchanges
-Zertifikat bereitgestellt werden. Für die Verwendung von SXGs in der Produktion ist ein CanSignHttpExchanges
-Zertifikat erforderlich.
Der Einfachheit halber wird bei dieser Anleitung davon ausgegangen, dass Sie die im Abschnitt Mit einem selbst signierten Zertifikat einrichten beschriebenen Konzepte verstehen.
Voraussetzungen
Sie haben ein
CanSignHttpExchanges
-Zertifikat. Auf dieser Seite sind die Zertifizierungsstellen aufgeführt, die diesen Zertifikattyp anbieten.Wenn Sie kein Zertifikat haben, können Sie Ihren Webserver so konfigurieren, dass Zertifikate automatisch von Ihrer Zertifizierungsstelle abgerufen werden. Eine Anleitung für den Inhalt von
webpkgserver.toml
finden Sie auf dieser Seite.Es ist zwar keine Voraussetzung, aber es wird dringend empfohlen,
webpkgserver
hinter einem Edge-Server auszuführen. Wenn Sie keinen Edge-Server verwenden, müssen Sie die OptionenTLS.PEMFile
undTLS.KeyFile
inwebpkgserver.toml
konfigurieren. Standardmäßig wirdwebpkgserver
über HTTP ausgeführt. SXG-Zertifikate müssen jedoch über HTTPS bereitgestellt werden, damit sie vom Browser als gültig angesehen werden. Wenn duTLS.PEMFile
undTLS.KeyFile
konfigurierst, kannwebpkgserver
HTTPS verwenden und somit das SXG-Zertifikat direkt an den Browser senden.
Anleitung
Erstellen Sie eine PEM-Datei, indem Sie das SXG-Zertifikat Ihrer Website gefolgt vom CA-Zertifikat Ihrer Website verketten. Weitere Informationen dazu finden Sie hier.
Das Dateiformat PEM wird häufig als „Container“ zum Speichern mehrerer Zertifikate verwendet.
Erstellen Sie eine neue
webpkgsever.toml
-Datei, indem Sie das Beispiel kopieren.cp ./webpkgserver.example.toml ./webpkgserver.toml
Öffnen Sie
webpkgserver.toml
mit einem Editor Ihrer Wahl und nehmen Sie die folgenden Änderungen vor:- Ändern Sie die Zeile
PEMFile = cert.pem
so, dass sie den Speicherort der PEM-Datei mit Ihrer vollständigen Zertifikatskette angibt. - Ändern Sie die Zeile
KeyFile = 'priv.key'
entsprechend dem Speicherort des privaten Schlüssels, der Ihrer PEM-Datei entspricht. - Passen Sie die Zeile
Domain = 'example.org'
an Ihre Website an. - (Optional) Wenn
webpkgserver
das SXG-Zertifikat alle 90 Tage (45 Tage bei Google) automatisch verlängern soll, konfigurieren Sie die Optionen im Abschnitt[SXG.ACME]
vonwebpkgserver.toml
. Diese Option gilt nur für Websites, auf denen ein DigiCert- oder Google ACME-Konto eingerichtet ist.
- Ändern Sie die Zeile
Konfigurieren Sie Ihren Edge-Server so, dass er Traffic an die Instanz
webpkgserver
weiterleitet.Es gibt zwei Haupttypen von Anfragen, die von
webpkgserver
verarbeitet werden: Anfragen für SXGs (die vom Endpunkt/priv/doc/
bereitgestellt werden) und Anfragen für das SXG-Zertifikat (die vom Endpunkt/webpkg/cert/
bereitgestellt werden). Die Regeln zum Umschreiben von URLs für jeden dieser Anfragetypen können leicht variieren. Weitere Informationen finden Sie unter Hinter dem Front-End-Edge-Server ausführen.Hinweis:
Standardmäßig stellt
webpkgserver
das SXG-Zertifikat unter/webpkg/cert/$CERT_HASH
bereit, z. B./webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY
. Führen Sie den folgenden Befehl aus, um$CERT_HASH
zu generieren:shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =