Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare Tunnel

最終更新 Markdown で表示Agent セットアップ

Cloudflare Tunnel との連携により、鍵サーバーへのトラフィックを安全なチャネル経由で送れます。鍵サーバーをパブリックインターネットに公開する必要はありません。


始める前に

対応プラットフォーム

Keyless は amd64arm アーキテクチャでテスト済みです。鍵サーバーのバイナリは、Go がサポートするすべてのアーキテクチャで動く見込みです。ほかの CPU 向けのコードサポートがある場合もありますが、それらのアーキテクチャは未テストです。

ベアメタルに加えて、仮想化環境やコンテナ環境でも鍵サーバーは問題なく動くはずです。適切な TCP ポートへの受信アクセスと、秘密鍵へのファイルシステムアクセス(ファイルシステムストレージを使う場合)を設定してください。

対応オペレーティングシステム

Keyless を動かすには、対応しているオペレーティングシステム(OS)が必要です。対応 OS は次のとおりです。

  • Ubuntu 20.04 LTS (Focal), 22.04 LTS (Jammy), 24.04 LTS (Noble)
  • Debian 11 (Bullseye), 12 (Bookworm), 13 (Trixie)
  • RHEL 8, 9, CentOS 8, および CentOS Stream 9
  • Amazon Linux 2, 2023

鍵サーバーは秘密鍵にアクセスするため、ベンダーがまだサポートしている(セキュリティ更新を受け取っている)OS を強く推奨します。


1. 鍵サーバーに cloudflared をインストールする

まず、鍵サーバーに cloudflared をインストールします。

この手順は、コマンドライン を使うか、Cloudflare ダッシュボード を使うかで異なります。

2. トンネルを作成し、ルートを追加する

次に、Cloudflare Tunnel を作成します。

この手順は、コマンドライン を使うか、Cloudflare ダッシュボード を使うかで異なります。

トンネル作成中に CIDR タブを開き、鍵サーバーのプライベート IP アドレスを入力します。トンネル作成後に CIDR ルートを追加 することもできます。

トンネルを作成したら、Cloudflare API で トンネルルートを一覧表示 し、次の値を後の手順用に保存します。

  • "virtual_network_id"
  • "network"

3. Keyless SSL 証明書をアップロードする

鍵サーバーを設定する前に、対応する SSL 証明書を Cloudflare のエッジへアップロードする必要があります。TLS 終端のとき、Cloudflare は接続元ブラウザーへこれらの証明書を提示し、(再開されていないセッションでは)指定した鍵サーバーと通信してハンドシェイクを完了します。

Cloudflare Keyless SSL で使う SAN だけを含む証明書を、Cloudflare へアップロードしてください。Keyless SSL のホスト名はすべて プロキシ済み である必要があります。

Keyless SSL で使う証明書は、それぞれアップロードする必要があります。

API で Keyless 証明書をアップロードするには、"tunnel" オブジェクトを含む POST リクエストを送ります。

"tunnel": {
  "vnet_id": "<VIRTUAL_NETWORK_ID>",
  "private_ip": "<NETWORK>"
}

4. 鍵サーバーをセットアップして有効化する

最後に、インフラストラクチャへキーサーバーをインストールし、Cloudflare のエッジで TLS を終端するために使う証明書の SSL キーを格納して、相互認証できるようにキーサーバーを有効化します。

インストール

これらの手順は Cloudflare パッケージリポジトリ にもあります。

Debian/Ubuntu パッケージ

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless trixie main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless bullseye main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless noble main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless jammy main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless focal main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless

RHEL/CentOS/Amazon Linux パッケージ

Gokeyless は PKCS#11/HSM 対応のために CGO を使うため、glibc への依存が発生します。ディストリビューションに合ったリポジトリを使ってください。

sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo
sudo dnf install gokeyless
curl -fsSl https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeyless
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo
sudo dnf install gokeyless
curl -fsSl https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeyless

設定

Cloudflare アカウントの詳細を、/etc/keyless/gokeyless.yaml にある設定ファイルに追加します。

  1. キーサーバーのホスト名を設定します。例: keyserver.keyless.example.com。これは Keyless 証明書をアップロードしたときに入力した値でもあり、この証明書の鍵を保持するキーサーバーのホスト名です。

  2. Zone ID を設定します(Cloudflare ダッシュボードの Overview タブにあります)。

  3. サーバー証明書の登録用の認証資格情報を設定します。gokeyless は次の 2 つのオプションに対応しています。

    • API トークン(推奨): Zone > SSL and Certificates > Edit 権限を持つ API トークンを作成 します。設定に次のように指定します。

      api_token: "<YOUR_API_TOKEN>"

      または環境変数 KEYLESS_API_TOKEN を使います。

    • Origin CA API キー(非推奨): Origin CA API キーを設定 します。このオプションは 2026 年 9 月 30 日に動作を停止します。

キーの格納

秘密鍵を /etc/keyless/keys/ にインストールし、ユーザーとグループを keyless、パーミッションを 400 に設定します。キーは PEM または DER 形式で、拡張子は .key である必要があります。

ls -l /etc/keyless/keys
-r-------- 1 keyless keyless 1675 Nov 18 16:44 example.com.key

複数のキーサーバーを運用する場合は、必要なキーを各キーサーバーに配布してください。お客様は通常、Salt や Puppet などの構成管理ツールでキーを配布するか、キーサーバーだけがアクセスできるネットワーク上の場所に /etc/keyless/keys をマウントします。キーは起動時にメモリへ読み込まれるため、gokeyless プロセスの開始 / 再起動時にそのネットワークパスへアクセスできる必要があります。

有効化

有効化するには、keyless インスタンスを再起動します。

  • systemd: sudo service gokeyless restart
  • upstart/sysvinit: sudo /etc/init.d/gokeyless restart

このコマンドが失敗した場合は、ログの確認 でトラブルシューティングしてください。

役に立ちましたか?