Web Packager を使用して Signed Exchange(SXG)を提供する方法について説明します。
Signed Exchange(SXG)は、SXG によって送受信される
リソースの配信方法に関係なく、リソースの出所を認証できます。
次の手順は、Cloud KMS 鍵を使用して Signed Exchange を設定する
Web パッケージャ。手順が記載されている
自己署名証明書と CanSignHttpExchanges
証明書の両方。
自己署名証明書を使用して SXG を提供する
自己署名証明書を使用した SXG の提供は、主に以下の目的で使用されます。 デモとテストを目的としています。自己署名証明書で署名された SXG テスト外で使用すると、ブラウザでエラー メッセージが生成される クローラーには配信しないでください。
前提条件
以下の手順を行うには、次が必要です。 openssl と 開発環境に Go がインストールされている。
自己署名証明書を生成する
このセクションでは、可能な自己署名証明書を生成する方法について説明します。 いくつかあります。
手順
秘密鍵を生成します。
openssl ecparam -out priv.key -name prime256v1 -genkey
秘密鍵は、
priv.key
という名前のファイルとして保存されます。証明書署名を作成する リクエストします(CSR)。
openssl req -new -sha256 -key priv.key -out cert.csr -subj '/O=Web Packager Demo/CN=example.com'
証明書署名リクエストは、証明書署名リクエストに関する情報を伝えるエンコード テキストのブロックです。 認証局(CA)に証明書をリクエストするために必要な情報証明書は Google Cloud からリクエストするわけではなく、 CA を使用するには、引き続き証明書署名リクエストを作成する必要があります。
上記のコマンドは、組織の証明書署名リクエストを作成します。 名前付きの
Web Packager Demo
に共通 nameexample.com
。「 「Common name」には、含まれるサイトの完全修飾ドメイン名を指定する必要があります。 SXG としてパッケージ化するコンテンツを指定します。本番環境の SXG 設定では、これはユーザーが所有するサイトになります。ただし、 環境をテストする場合は、任意の環境、 サイトをご覧ください。
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")
このコマンドでは、手順 1 と 2 で作成した秘密鍵と CSR を使用して、 証明書ファイル
cert.pem
。-extfile
フラグは、証明書を 証明書拡張CanSignHttpExchanges
(1.3.6.1.4.1.11129.2.1.22
は オブジェクト ID (CanSignHttpExchanges
拡張機能のもの)。また、-extfile
フラグもexample.com
をサブジェクト代替関数として定義しています。 名前。cert.pem
の内容を確認するには、 次のコマンドを実行します。openssl x509 -in cert.pem -noout -text
これで秘密鍵と証明書の作成が完了しました。次が必要です:
priv.key
ファイルとcert.pem
ファイルを次のセクションで説明します。
テスト用に Web Packager サーバーを設定する
前提条件
Web Packager をインストールします。
git clone https://github.com/google/webpackager.git
webpkgserver
をビルドします。cd webpackager/cmd/webpkgserver go build .
webpkgserver
は、Web Packager プロジェクト内の特定のバイナリです。webpkgserver
が正しくインストールされていることを確認します。./webpkgserver --help
このコマンドは、
webpkgserver
の使用状況に関する情報を返します。条件 それでもうまくいきません。まず、 GOPATH が構成されている 確認します。
手順
webpkgserver
ディレクトリに移動します(すでにこの ディレクトリにあります)。cd /path/to/cmd/webpkgserver
サンプルをコピーして
webpkgsever.toml
ファイルを作成します。cp ./webpkgserver.example.toml ./webpkgserver.toml
このファイルには、
webpkgserver
の構成オプションが含まれています。任意のエディタで
webpkgserver.toml
を開き、次のように操作します。 変更点:#AllowTestCert = false
の行をAllowTestCert = true
に変更します。- 行
PEMFile = 'path/to/your.pem'
を変更して、次のパスを反映させます。 作成した PEM 証明書cert.pem
。「TLS.PEMFile
という行があります。これは別の構成オプションです。 - パスを反映するように
KeyFile = 'priv.key'
の行を変更します。priv.key
という秘密鍵を作成します。この行は変更しないでください。TLS.KeyFile
に言及している場合—これは別の構成オプションです。 #CertURLBase = '/webpkg/cert'
の行をCertURLBase = 'data:'
に変更します。CertURLBase
は SXG の提供ロケーションを示します。 あります。この情報は、cert-url
パラメータを設定するために使用されます。Signature
ヘッダーがあります。本番環境では、CertURLBase
が使用されます。 例:CertURLBase = 'https://mysite.com/'
。ただしローカル環境では テストでは、CertURLBase = 'data:'
を使用してwebpkgserver
に指示できます。 使用するには、 URLcert-url
フィールドに証明書をインライン化します。ローカルテストの場合 SXG 証明書を提供する最も便利な方法です。- 作成するドメインを反映するように
Domain = 'example.org'
の行を変更します。 証明書を作成しました。こちらの手順に従っても、 「example.com
」に変更する必要があります。webpkgserver
は、指定されたドメインからのみコンテンツを取得します。webpkgserver.toml
。別のドメインからページを取得しようとした場合webpkgserver.toml
を更新しないと、webpkgserver
ログに エラー メッセージURL doesn't match the fetch targets
。
任意
サブリソースの有効化または無効化を プリロード、 次の
webpkgserver.toml
構成オプションが関連しています。スタイルシートをプリロードするためのディレクティブを
webpkgserver
で挿入するには スクリプト サブリソースを SXG として実行する場合は、#PreloadCSS = false
の行を変更します。 宛先:PreloadCSS = true
さらに、#PreloadJS = false
の行をPreloadJS = true
に変更します。この構成オプションを使用する代わりに、
Link: rel="preload"
ヘッダーと<link rel="preload">
タグを 確認します。デフォルトでは、
webpkgserver
は既存の<link rel="preload">
タグを置き換えます。<link>
タグ(このコンテンツを SXG、その際、webpkgserver
はallowed-alt-sxg
およびheader-integrity
ディレクティブを追加できます。HTML 作成者がこれらを手動で追加する必要はありません。宛先 この動作をオーバーライドし、SXG 以外の既存のプリロードを保持するには、#KeepNonSXGPreloads (default = false)
からKeepNonSXGPreloads = true
に変更。 このオプションを有効にすると、SXG が Google SXG キャッシュは 要件。
webpkgserver
を開始します。./webpkgserver
サーバーが正常に起動すると、次のログ メッセージが表示されます。
shell Listening at 127.0.0.1:8080 Successfully retrieved valid OCSP. Writing to cache in /private/tmp/webpkg
ログメッセージは若干異なる場合があります。特に、このディレクトリには
webpkgserver
で証明書のキャッシュに使用される方法は、オペレーティング システムによって異なります。これらのメッセージが表示されない場合は、
webpkgserver.toml
を再度確認します。webpkgserver.toml
を更新した場合は、webpkgserver
を再起動する必要があります。次のコマンドを使用して Chrome を起動します。
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`
このコマンドは、関連付けられている証明書エラーを無視するよう Chrome に指示します
cert.pem
で。これにより、TEST モードの SXG テスト機能を使用して あります。このコマンドなしで Chrome を起動した場合は、SXG を検査します。 DevTools でエラーCertificate verification error: ERR_CERT_INVALID
が表示されます。注:
オンになっている Chrome の場所を反映するように、このコマンドの調整が必要になる場合があります マシンと
cert.pem
の場所を指定します。これを完了した場合 正しくない場合は、アドレスバーの下に警告が表示されます。「 警告は次のようになります。You are using an unsupported command-line flag: --ignore-certificate-errors-spki-list=9uxADcgc6/ho0mJLRMBcOjfBaN21k0sOInoMchr9CMY=.
警告にハッシュ文字列が含まれていない場合は、正しく処理できていません。 は SXG 証明書の場所を示します。
DevTools の [ネットワーク] タブを開き、次の URL にアクセスします。
http://localhost:8080/priv/doc/https://example.com
。これにより、次の URL で実行されている
webpackager
インスタンスにリクエストが送信されます。http://localhost:8080
(次の内容を含む SXG の場合)https://example.com
。/priv/doc/
は、使用されるデフォルトの API エンドポイントです。webpackager
。次のリソースが [ネットワーク] タブに表示されます。
signed-exchange
タイプのリソース。これは SXG です。cert-chain+cbor
タイプのリソース。これは SXG 証明書です。SXG 証明書はapplication/cert-chain+cbor
形式を使用する必要があります。document
タイプのリソース。こちらは SXG 経由で配信されたコンテンツです。
これらのリソースが表示されない場合は、ブラウザのキャッシュを削除してから、
http://localhost:8080/priv/doc/https://example.com
を再読み込みしています。[プレビュー] タブをクリックして、Signed Exchange の詳細を確認します。 その署名です。
CanSignHttpExchanges
証明書を使用して Signed Exchange を提供する
このセクションでは、
CanSignHttpExchanges
証明書。本番環境で SXG を使用するには、
CanSignHttpExchanges
証明書。
わかりやすくするため、これらの命令は 「Signed Exchange を設定する」で説明されている概念を理解していること 自己署名 API を使用して、 証明書 。
前提条件
CanSignHttpExchanges
の証明書があります。この ページ に、このタイプの証明書を提供する CA の一覧を示します。証明書がない場合は、webpkgserver を次のように構成できます。 CA から証明書を自動的に取得します。詳細については、 この地域の「
webpkgserver.toml
」に向かうルート ページをご覧ください。必須ではありませんが、Deployment の エッジサーバーの背後にある
webpkgserver
。エッジサーバーを使用しない場合はTLS.PEMFile
オプションとTLS.KeyFile
オプションをwebpkgserver.toml
。デフォルトでは、webpkgserver
は HTTP 経由で実行されます。ただし、SXG 証明書は、ブラウザで有効と見なされるには HTTPS 経由で提供する必要があります。TLS.PEMFile
とTLS.KeyFile
を設定すると、webpkgserver
が以下を使用できるようになります SXG 証明書を直接ブラウザに提供します。
手順
サイトの SXG 証明書と サイトの CA 証明書を使用できます。詳しい手順については、このモジュールの こちらをご覧ください。
PEM は 「コンテナ」として一般的に使用されるファイル形式複数のストレージクラスを 提供します。
サンプルをコピーして新しい
webpkgsever.toml
ファイルを作成します。cp ./webpkgserver.example.toml ./webpkgserver.toml
任意のエディタで
webpkgserver.toml
を開き、 次の変更を行います。- PEM の場所を反映するように
PEMFile = cert.pem
の行を変更します。 。 KeyFile = 'priv.key'
の行を変更し、 秘密鍵がお使いの PEM ファイルに対応するものです。- サイトを反映するように
Domain = 'example.org'
の行を変更します。 - (省略可)
webpkgserver
で SXG 証明書を自動更新する頻度 90 日(Google の場合は 45 日)にするには、[SXG.ACME]
webpkgserver.toml
。このオプションは、DigiCert を取得済みのサイトにのみ適用されます Google ACME のアカウント設定です。
- PEM の場所を反映するように
トラフィックを
webpkgserver
に転送するようにエッジサーバーを構成する 構成されますwebpkgserver
が処理するリクエストには、主に次の 2 つのタイプがあります。 (/priv/doc/
エンドポイントによって提供される)SXG と SXG 証明書(/webpkg/cert/
エンドポイントによって提供されます)。「 URL 書き換えルールは、リクエストの種類ごとに若干異なります。対象 詳細については、フロントエンド エッジの背後で実行される できます。注:
デフォルトでは、
webpkgserver
は次の場所で SXG 証明書を提供します。/webpkg/cert/$CERT_HASH
- 例:/webpkg/cert/-0QmE0gvoedn92gtwI3s7On9zPevJGm5pn2RYhpZxgY
。$CERT_HASH
を生成するには、次のコマンドを実行します。shell openssl base64 -in cert.pem -d | openssl dgst -sha256 -binary | base64 | tr /+ _- | tr -d =