Signed Exchanges mit Web Packager einrichten

Signed Exchanges (SXGs) mit Web Packager bereitstellen

Katie Hempenius
Katie Hempenius

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

  1. 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.

  2. 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 Name example.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.

  3. 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 Zertifikaterweiterung CanSignHttpExchanges (1.3.6.1.4.1.11129.2.1.22 ist Objekt Kennung für die Erweiterung CanSignHttpExchanges). Darüber hinaus wird das Flag -extfile ebenfalls definiert example.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 und cert.pem.

Web Packager-Server zum Testen einrichten

Vorbereitung

  1. Installieren Sie Web Packager.

    git clone https://github.com/google/webpackager.git
    
  2. Erstellen Sie webpkgserver.

    cd webpackager/cmd/webpkgserver
    go build .
    

    webpkgserver ist eine spezifische Binärdatei im Web Packager-Projekt.

  3. 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

  1. Öffnen Sie das Verzeichnis webpkgserver (möglicherweise befinden Sie sich dort bereits) -Verzeichnis).

    cd /path/to/cmd/webpkgserver
    
  2. 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.

  3. Öffnen Sie webpkgserver.toml mit einem Editor Ihrer Wahl und nehmen Sie Folgendes vor: Änderungen:

    • Ändern Sie die Zeile #AllowTestCert = false in AllowTestCert = true.
    • Ändern Sie die Linie PEMFile = 'path/to/your.pem' so, dass sie den Pfad zu das von Ihnen erstellte PEM-Zertifikat cert.pem. Ändern Sie nicht den Zeile, in der TLS.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üssel priv.key, den Sie erstellt haben. Zeile nicht ändern wobei TLS.KeyFile erwähnt wird. Dies ist eine andere Konfigurationsoption.
    • Ändern Sie die Zeile #CertURLBase = '/webpkg/cert' in CertURLBase = 'data:'. CertURLBase gibt den Bereitstellungsort der SXG an. Zertifikat. Anhand dieser Informationen wird der cert-url-Parameter festgelegt in die Signature der SXG-Datei an. In Produktionsumgebungen wird CertURLBase verwendet. Beispiel: CertURLBase = 'https://mysite.com/'. Für lokale Unternehmen Test verwendet, kann CertURLBase = 'data:' verwendet werden, um webpkgserver anzuweisen für die Nutzung von Daten URL um das Zertifikat in das Feld cert-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 in example.com geändert werden. webpkgserver ruft nur Inhalte von der Domain ab, die in webpkgserver.toml. Wenn Sie versuchen, Seiten von einer anderen Domain abzurufen ohne webpkgserver.toml zu aktualisieren, zeigen die webpkgserver-Logs Fehlermeldung URL 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 an PreloadCSS = true. Ändern Sie außerdem die Zeile #PreloadJS = false in PreloadJS = 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 durch webpkgserver ersetzt durch die entsprechenden <link>-Tags, die zum Abrufen dieses Inhalts als SXG Dabei legt webpkgserver den Parameter allowed-alt-sxg und header-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) in KeepNonSXGPreloads = true. Wenn du diese Option aktivierst, kann der SXG möglicherweise keine Google SXG-Cache verwenden, Anforderungen erfüllen.

  4. 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 Sie webpkgserver neu starten.

  5. 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 Fehler Certificate 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.

  6. Ö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 unter http://localhost:8080 für einen SXG mit folgendem Inhalt: https://example.com /priv/doc/ ist der standardmäßige API-Endpunkt, der von webpackager.

    Screenshot des Tabs „Network“ in den Entwicklertools mit einem SXG und seinem Zertifikat.

    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 Format application/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.

    Screenshot des Tabs „Preview“ (Vorschau) mit einem SXG

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 Optionen TLS.PEMFile und TLS.KeyFile in webpkgserver.toml Standardmäßig wird webpkgserver über HTTP ausgeführt. SXG Zertifikate müssen über HTTPS bereitgestellt werden, damit sie vom Browser als gültig eingestuft werden. Wenn Sie TLS.PEMFile und TLS.KeyFile konfigurieren, kann webpkgserver verwendet werden HTTPS verwenden und das SXG-Zertifikat direkt an den Browser senden.

Anleitung

  1. 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.

  2. Erstellen Sie eine neue webpkgsever.toml-Datei, indem Sie das Beispiel kopieren.

    cp ./webpkgserver.example.toml ./webpkgserver.toml
    
  3. Ö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] von webpkgserver.toml Diese Option gilt nur für Websites mit einem DigiCert- oder die Einrichtung eines Google ACME-Kontos.
  4. 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 =