2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloudflare Zero Trust Root CA 証明書のダウンロードページを Pages で作る

Last updated at Posted at 2025-01-20

目的

以下の変更により、Cloudflare Zero Trust Root CA 証明書はアカウントごとに生成され、個々のデバイスにインストールする必要があります。

ユーザ数が少ない場合やデバイスによって配布ツールがない場合には、アカウントごとに生成される証明書を個別にダウンロードしてもらう必要があります。

その際にダウンロードページを Pages で作ると、非常に手軽に構築できるので、手順と動作を確認します。

Pages を作成

以下のコードを使います。

以下のように、簡易的な htmlfunctions 処理の構成です。

.
├── README.md
├── functions
│   ├── android.js
│   ├── ios.js
│   ├── macos.js
│   └── windows.js
└── index.html

ローカルで動作を確認する場合は以下のような .dev.vars を作成し、
npx wrangler pages dev . します。

.dev.vars
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 を有効化します。

image.png

有効化後、Access > Application から確認できる以下のページに Application が作成されるため、適宜 Access ポリシーを作成し、認証されたユーザのみのアクセスに限定します。

image.png
image.png

App Launcher から表示して、ユーザが簡単にアクセスできるようにします。

image.png

Pages で環境変数を設定

以下の手順で環境変数を設定します。

  • ACCOUNT_ID
  • APITOKEN
  • ROOT_CA_CERT_ID

image.png

動作確認

App Launcher もしくは https://cf-root-ca.pages.dev/ 等の Pages のリンクから確認できます。

image.png

image.png

認証を経た上で、アカウントごとに生成される証明書を個別にダウンロードできることが確認できました。

image.png

まとめ

Pages と Pages Functions を使って、簡単にページが構築できました。

アカウントに紐づいた環境変数や認証の文脈も加えられ、要件としては十分です。

個人的にも macOS, Windows, iOS, Android と異なるデバイス向けの証明書ダウンロードページとして活用できそうです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?