mTLS
HTTPS ↗を使用する際、サーバーはクライアントが自分の身元を証明するために認証するための証明書を提示します。さらに厳重なセキュリティを求めるサービスでは、クライアントが証明書も提示することを要求します。
このプロセスはmTLS ↗として知られ、認証をアプリケーションコードで管理するのではなく、TLSのプロトコルに移行します。認可されていないクライアントからの接続は、TLSハンドシェイク中に拒否されます。
サービスと通信する際にクライアント証明書を提示するには、ワーカープロジェクトのwrangler.tomlファイルにmTLS証明書のバインディングを作成します。これにより、ワーカーがあなたの代わりにサービスにクライアント証明書を提示できるようになります。
まず、wrangler mtls-certificateコマンドを使用して、証明書とその秘密鍵をアカウントにアップロードします:
npx wrangler mtls-certificate upload --cert cert.pem --key key.pem --name my-client-cert次に、ワーカープロジェクトのwrangler.tomlファイルを更新してmTLS証明書のバインディングを作成します:
mtls_certificates = [ { binding = "MY_CERT", certificate_id = "<CERTIFICATE_ID>" }]mTLS証明書のバインディングを追加すると、fetch()メソッドが利用可能なワーカーの環境に変数が含まれます。このfetch()メソッドは標準のFetch APIを使用し、グローバルfetchと全く同じシグネチャを持ちますが、TLS接続を確立する際には常にクライアント証明書を提示します。
export default { async fetch(request, environment) { return await environment.MY_CERT.fetch("https://a-secured-origin.com"); },};interface Env { MY_CERT: Fetcher;}
export default { async fetch(request, environment): Promise<Response> { return await environment.MY_CERT.fetch("https://a-secured-origin.com") }} satisfies ExportedHandler<Env>;