カスタムドメイン
Internet Computer ブロックチェーン上の Web3 Dapps を含むすべてのスマートコントラクトは、ルートキーによって保護されています。エンドツーエンドのセキュリティは、ブラウザに組み込まれたプロキシであるサービスワーカーによって提供され、 Internet Computer ブロックチェーンからダウンロードされたデータの整合性を検証します。
このガイドでは、特定の Canister に対してエンドツーエンドのセキュリティを備えたカスタムドメインを可能にするカスタムサービスワーカーを構築する方法を説明します。サービスワーカーは、インターネットに接続された任意のデバイスから静的アセットとして提供することができ、サービスワーカーがロードされた後、すべてのデータはクライアントと Internet Computer ブロックチェーン間で直接転送されます。
DNS を制御することでサイトのリダイレクトが可能になり、TLS 証明書の制御も可能になるため、標準的な Web 技術を使用するサイトのセキュリティは最終的に DNS に依存することになります。したがって、標準的な Web サイトでは、少なくとも DNS レジストラを信頼する必要があります。もしレジストラが静的ホスティングを提供するならば、カスタムサービスワーカーをデプロイすることで、信頼すべきエンティティを増やすことなく、Internet Computer のブロックチェーン上の標準的な Web3 Dapps にエンドツーエンドのセキュリティを提供することができます。
カスタムサービスワーカーを作成する
- Canister を IC にデプロイし、 Canister ID を記録してください。
- IC 公式レポ をクローンし、
ic/typescript/service-worker
にあるservice worker フォルダに移動します。 - ファイル
service-worker/src/sw/http_request.ts
内のhostnameCanisterIdMap
にドメインと Canister のマッピングを追加し、 Canister ID をマッピングしてください。 - サービスワーカーを
service-worker/README.md
の説明に従ってビルドします。出力は以下のようになるはずです:index.html
- ミニファイされた
.js
ファイル .map
ファイル
- サーバーまたは CDN からアセット(
index.html
、.js
、.map
ファイル)をホスティングし、カスタムドメイン名をこのサーバーに向けます。 - テスト
Internet Identity(II)を使用してユーザーを認証する Web サイト向け: II によって提供される Principal は、ログイン要求が開始されたドメインに依存します。そのため、 Canister URL を通じてユーザーを認証している場合に、カスタムドメインに切り替えようとすると、ユーザーは同じ Principal を持てなくなります。これを防ぐには、Alternative Origins を設定する必要があります。