Signed Exchanges (SXGs) mit Web Packager bereitstellen
Ein Signed Exchange (SXG) ist ein Übermittlungsmechanismus, der
den Ursprung einer Ressource
unabhängig von ihrer Übermittlung authentifizieren können.
In der folgenden Anleitung wird erläutert, wie Sie Signed Exchanges mithilfe von
Web Packager Eine Anleitung ist enthalten
sowohl das selbst signierte als auch das CanSignHttpExchanges
-Zertifikat.
SXGs mit einem selbst signierten Zertifikat bedienen
Die Verwendung eines selbst signierten Zertifikats zur Bereitstellung von SXGs wird hauptsächlich für Demonstrations- und Testzwecken. Mit einem selbst signierten Zertifikat signierte SXGs werden im Browser Fehlermeldungen generiert, wenn sie außerhalb von Tests verwendet werden. und sollten nicht für Crawler bereitgestellt werden.
Vorbereitung
Um dieser Anleitung folgen zu können, benötigen Sie openssl und Go ist in Ihrer Entwicklungsumgebung installiert.
Selbst signiertes Zertifikat generieren
In diesem Abschnitt wird erläutert, wie Sie ein selbst signiertes Zertifikat generieren, das die mit Signed Exchanges verwendet werden.
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.Zertifikatsignierung erstellen Anfrage (CSR) zurückgegeben.
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
Eine Zertifikatsignierungsanfrage ist ein Block mit codiertem Text, der den Informationen, die zum Anfordern eines Zertifikats von einer Zertifizierungsstelle erforderlich sind Obwohl Sie kein Zertifikat von einem Zertifizierungsstelle verwenden, müssen Sie trotzdem eine Anfrage zur Zertifikatssignierung erstellen.
Mit dem obigen Befehl wird eine Anfrage zur Zertifikatssignierung für eine Organisation erstellt namens
Web Packager Demo
mit der allgemeinen Nameexample.com
. Die Common Name ist der voll qualifizierte Domainname der Website, die den Inhalt, den du als SXG verpacken möchtest.In einer SXG-Produktionsumgebung ist das eine Website, deren Inhaber du bist. In einer wie in dieser Anleitung beschrieben, können Sie Website.
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 CSR aus den Schritten 1 und 2 zum Erstellen der Zertifikatsdatei
cert.pem
. Das Flag-extfile
verknüpft das Zertifikat mit die ZertifikaterweiterungCanSignHttpExchanges
(1.3.6.1.4.1.11129.2.1.22
ist Objekt Kennung für die ErweiterungCanSignHttpExchanges
). Darüber hinaus wird das Flag-extfile
ebenfalls definiertexample.com
als Subjektalternative Name:Wenn Sie mehr über den Inhalt von
cert.pem
erfahren möchten, können Sie ihn mit der folgenden Befehl:openssl x509 -in cert.pem -noout -text
Die privaten Schlüssel und Zertifikate sind nun erstellt. Sie benötigen die
priv.key
undcert.pem
.
Web Packager-Server zum Testen einrichten
Vorbereitung
Installieren Sie Web Packager.
git clone https://github.com/google/webpackager.git
Erstellen Sie
webpkgserver
.cd webpackager/cmd/webpkgserver go build .
webpkgserver
ist eine spezifische Binärdatei im Web Packager-Projekt.Prüfen Sie, ob
webpkgserver
korrekt installiert wurde../webpkgserver --help
Mit diesem Befehl sollten Informationen zur Verwendung von
webpkgserver
zurückgegeben werden. Wenn das Problem nicht funktioniert, sollten Sie als Erstes überprüfen, GOPATH ist konfiguriert korrekt sind.
Anleitung
Öffnen Sie das Verzeichnis
webpkgserver
(möglicherweise befinden Sie sich dort bereits) -Verzeichnis).cd /path/to/cmd/webpkgserver
Erstellen Sie eine
webpkgsever.toml
-Datei, indem Sie das Beispiel kopieren.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 Folgendes vor: Änderungen:- Ändern Sie die Zeile
#AllowTestCert = false
inAllowTestCert = true
. - Ändern Sie die Linie
PEMFile = 'path/to/your.pem'
so, dass sie den Pfad zu das von Ihnen erstellte PEM-Zertifikatcert.pem
. Ändern Sie nicht den Zeile, in derTLS.PEMFile
erwähnt wird. Dies ist eine andere Konfigurationsoption. - Ändern Sie die Linie
KeyFile = 'priv.key'
so, dass sie den Pfad des den privaten Schlüsselpriv.key
, den Sie erstellt haben. Zeile nicht ändern wobeiTLS.KeyFile
erwähnt wird. Dies ist eine andere Konfigurationsoption. - Ändern Sie die Zeile
#CertURLBase = '/webpkg/cert'
inCertURLBase = 'data:'
.CertURLBase
gibt den Bereitstellungsort der SXG an. Zertifikat. Anhand dieser Informationen wird dercert-url
-Parameter festgelegt in dieSignature
der SXG-Datei an. In Produktionsumgebungen wirdCertURLBase
verwendet. Beispiel:CertURLBase = 'https://mysite.com/'
. Für lokale Unternehmen Test verwendet, kannCertURLBase = 'data:'
verwendet werden, umwebpkgserver
anzuweisen für die Nutzung von Daten URL um das Zertifikat in das Feldcert-url
einzufügen. Für lokale Tests Dies ist die einfachste Möglichkeit, das SXG-Zertifikat bereitzustellen. - Ändern Sie die Zeile
Domain = 'example.org'
entsprechend der Domain, ein Zertifikat erstellt haben. Wenn Sie die Anleitung in diesem Artikel wörtlich zu lesen ist, sollte dieser inexample.com
geändert werden.webpkgserver
ruft nur Inhalte von der Domain ab, die inwebpkgserver.toml
. Wenn Sie versuchen, Seiten von einer anderen Domain abzurufen ohnewebpkgserver.toml
zu aktualisieren, zeigen diewebpkgserver
-Logs FehlermeldungURL doesn't match the fetch targets
.
Optional
Wenn Sie eine Unterressource aktivieren oder deaktivieren möchten: Vorabladen, Die folgenden
webpkgserver.toml
-Konfigurationsoptionen sind relevant:Um
webpkgserver
Anweisungen zum Vorabladen des Stylesheets einzufügen und Skript-Unterressourcen als SXGs, ändere die Zeile#PreloadCSS = false
anPreloadCSS = true
. Ändern Sie außerdem die Zeile#PreloadJS = false
inPreloadJS = true
.Als Alternative zu dieser Konfigurationsoption können Sie
Link: rel="preload"
-Header und<link rel="preload">
-Tags hinzufügen zu einem im HTML-Code der Seite.Standardmäßig werden vorhandene
<link rel="preload">
-Tags durchwebpkgserver
ersetzt durch die entsprechenden<link>
-Tags, die zum Abrufen dieses Inhalts als SXG Dabei legtwebpkgserver
den Parameterallowed-alt-sxg
undheader-integrity
Anweisungen nach Bedarf hinzufügen – HTML-Autoren müssen diese nicht manuell hinzufügen. Bis überschreiben und vorhandene Nicht-SXG-Vorabladevorgänge beibehalten, ändern Sie#KeepNonSXGPreloads (default = false)
inKeepNonSXGPreloads = true
. Wenn du diese Option aktivierst, kann der SXG möglicherweise keine Google SXG-Cache verwenden, Anforderungen erfüllen.
- Ändern Sie die Zeile
Starten Sie
webpkgserver
../webpkgserver
Wenn der Server erfolgreich gestartet wurde, sollten Sie die folgenden Protokollmeldungen sehen:
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkg
Ihre Logeinträge können etwas anders aussehen. Insbesondere ist das Verzeichnis den
webpkgserver
zum Speichern von Zertifikaten verwendet, variiert je nach Betriebssystem.Wenn diese Meldungen nicht angezeigt werden, ist ein guter erster Schritt zur Fehlerbehebung
webpkgserver.toml
noch einmal überprüfen.Wenn Sie
webpkgserver.toml
aktualisieren, sollten Siewebpkgserver
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`
Dieser Befehl weist Chrome an, die Zertifikatfehler zu ignorieren, mit
cert.pem
. So könnt ihr SXGs mit einem Test- Zertifikat. Wenn Chrome ohne diesen Befehl gestartet wird, wird die SXG-Datei in den Entwicklertools wird der FehlerCertificate verification error: ERR_CERT_INVALID
angezeigt.Hinweis:
Möglicherweise müssen Sie diesen Befehl anpassen, damit der Standort von Chrome angezeigt wird. Ihrer Maschine und den Speicherort von
cert.pem
. Wenn Sie bereits sollten Sie eine Warnung unterhalb der Adressleiste sehen. Die 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 Hash-String enthält, haben Sie einen Fehler gemacht. den Speicherort des SXG-Zertifikats angegeben.
Öffnen Sie in den Entwicklertools den Tab Network (Netzwerk) und rufen Sie dann die folgende URL auf:
http://localhost:8080/priv/doc/https://example.com
Dadurch wird eine Anfrage an die Instanz
webpackager
gesendet, die unterhttp://localhost:8080
für einen SXG mit folgendem Inhalt:https://example.com
/priv/doc/
ist der standardmäßige API-Endpunkt, der vonwebpackager
.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
Das sind die Inhalte, die über SXG übermittelt wurden.
Wenn Sie diese Ressourcen nicht sehen, leeren Sie den Browser-Cache und löschen Sie dann
http://localhost:8080/priv/doc/https://example.com
wird neu geladen.Klicken Sie auf den Tab Preview (Vorschau), um weitere Informationen zu Signed Exchange zu erhalten. und ihrer Signatur.
- Eine Ressource vom Typ
Signed Exchanges mit einem CanSignHttpExchanges
-Zertifikat bereitstellen
In diesem Abschnitt wird erklärt, wie SXGs mit einem
CanSignHttpExchanges
Zertifikat. Für die Verwendung von SXGs in der Produktion ist ein
CanSignHttpExchanges
Zertifikat.
Der Einfachheit halber basiert diese Anleitung auf der Annahme, , dass Sie mit den Konzepten vertraut sind, die unter Signierte Exchanges einrichten mit einem selbst signierten Zertifikat .
Vorbereitung
Sie haben ein
CanSignHttpExchanges
-Zertifikat. Dieses Seite listet die Zertifizierungsstellen auf, die diese Art von Zertifikat anbieten.Wenn Sie kein Zertifikat haben, können Sie Ihren webpkgserver so konfigurieren, Zertifikate von Ihrer Zertifizierungsstelle automatisch abrufen. Sie können die Wegbeschreibung für
webpkgserver.toml
hier .Obwohl dies keine Voraussetzung ist, wird dringend empfohlen,
webpkgserver
hinter einem Edge-Server. Wenn Sie keinen Edge-Server verwenden, müssen die OptionenTLS.PEMFile
undTLS.KeyFile
inwebpkgserver.toml
Standardmäßig wirdwebpkgserver
über HTTP ausgeführt. SXG Zertifikate müssen über HTTPS bereitgestellt werden, damit sie vom Browser als gültig eingestuft werden. Wenn SieTLS.PEMFile
undTLS.KeyFile
konfigurieren, kannwebpkgserver
verwendet werden HTTPS verwenden und das SXG-Zertifikat direkt an den Browser senden.
Anleitung
Erstelle eine PEM-Datei, indem du das SXG-Zertifikat deiner Website verkettest, gefolgt von das CA-Zertifikat Ihrer Website. Weitere Anweisungen hierzu finden Sie hier.
PEM ist ein Dateiformat, das häufig als „Container“ verwendet wird zum Speichern mehrerer Zertifikate.
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 folgende Änderungen:- Ändern Sie die Zeile
PEMFile = cert.pem
so, dass sie den Standort des PEM angibt. -Datei mit Ihrer vollständigen Zertifikatskette. - Ändern Sie die Zeile
KeyFile = 'priv.key'
so, dass sie die Position des privaten Schlüssel für Ihre PEM-Datei. - Ändern Sie die Zeile
Domain = 'example.org'
entsprechend Ihrer Website. - Optional: Wenn
webpkgserver
das SXG-Zertifikat automatisch alle 90 Tage (45 Tage bei Google) haben, konfigurieren Sie die Optionen im Bereich[SXG.ACME]
vonwebpkgserver.toml
Diese Option gilt nur für Websites mit einem DigiCert- oder die Einrichtung eines Google ACME-Kontos.
- Ändern Sie die Zeile
Edge-Server so konfigurieren, dass Traffic an
webpkgserver
weitergeleitet wird Instanz.Es gibt zwei Haupttypen von Anfragen, die von
webpkgserver
verarbeitet werden: Anfragen für SXGs (die vom/priv/doc/
-Endpunkt bereitgestellt werden) und Anfragen für Das SXG-Zertifikat (die vom/webpkg/cert/
-Endpunkt bereitgestellt werden) Die Die URL-Umschreibungsregeln variieren für jeden dieser Anfragetypen geringfügig. Für Weitere Informationen finden Sie unter Laufen hinter dem Frontend-Edge Server.Hinweis:
Standardmäßig stellt
webpkgserver
das SXG-Zertifikat unter/webpkg/cert/$CERT_HASH
, 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 =