目的
以下の変更により、Cloudflare Zero Trust Root CA 証明書はアカウントごとに生成され、個々のデバイスにインストールする必要があります。
ユーザ数が少ない場合やデバイスによって配布ツールがない場合には、アカウントごとに生成される証明書を個別にダウンロードしてもらう必要があります。
その際にダウンロードページを Pages で作ると、非常に手軽に構築できるので、手順と動作を確認します。
Pages を作成
以下のコードを使います。
以下のように、簡易的な html
と functions
処理の構成です。
.
├── README.md
├── functions
│ ├── android.js
│ ├── ios.js
│ ├── macos.js
│ └── windows.js
└── index.html
ローカルで動作を確認する場合は以下のような .dev.vars
を作成し、
npx wrangler pages dev .
します。
ACCOUNT_ID='YOUR_ACCOUNT_ID'
APITOKEN='YOUR_APITOKEN'
ROOT_CA_CERT_ID='YOUR_ROOT_CA_CERT_ID'
フォークした自分の GitHub からデプロイする場合は、以下の手順に沿って作成します。
CLI からデプロイする場合は、以下のコマンドを実行します。
export URL='https://github.com/kyouheicf/cf-root-ca.git'
git clone $URL && cd $(basename $_ .git)
npx wrangler pages deploy .
Pages のプロジェクト名(Git のフォルダ名)は適宜変更する必要があるかもしれません。
Access を有効化し、ポリシーを作成
以下の「Enable Access on your *.pages.dev
domain」の手順で、Access を有効化します。
有効化後、Access > Application から確認できる以下のページに Application が作成されるため、適宜 Access ポリシーを作成し、認証されたユーザのみのアクセスに限定します。
App Launcher から表示して、ユーザが簡単にアクセスできるようにします。
Pages で環境変数を設定
以下の手順で環境変数を設定します。
ACCOUNT_ID
APITOKEN
ROOT_CA_CERT_ID
動作確認
App Launcher もしくは https://cf-root-ca.pages.dev/
等の Pages のリンクから確認できます。
認証を経た上で、アカウントごとに生成される証明書を個別にダウンロードできることが確認できました。
まとめ
Pages と Pages Functions を使って、簡単にページが構築できました。
アカウントに紐づいた環境変数や認証の文脈も加えられ、要件としては十分です。
個人的にも macOS, Windows, iOS, Android と異なるデバイス向けの証明書ダウンロードページとして活用できそうです。