Cloudflare Tunnel のセットアップ を使えない場合は、鍵サーバー用のパブリック DNS レコードを作成することもできます。
この方法は理想的ではありません。DNS レコードを プロキシ できないため、鍵サーバーのオリジン IP アドレスが公開されます。
Keyless は amd64 と arm アーキテクチャでテスト済みです。鍵サーバーのバイナリは、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 を強く推奨します。
- ターミナルを開き、
openssl rand -hex 24を実行して、11aa40b4a5db06d4889e48e2f738950ddfa50b7349d09b5f.example.comのような長くてランダムなホスト名を生成します。 - DNS プロバイダーの画面で、このレコードを Keyless SSL サーバーの IP アドレスを指す A または AAAA レコードとして追加します。
- Keyless SSL サーバーの初期化時に、このホスト名をサーバーのホスト名として使います。
Keyless SSL では 2 種類の証明書 を使います。取り違えは、セットアップでいちばん多い誤りです。
| 証明書 | 内容 | SAN に含めるもの |
|---|---|---|
| エッジ(Keyless SSL)証明書 | サイト向けに Cloudflare が配信する公開証明書です。 | サイトのホスト名のみ(例: www.example.com) |
| 鍵サーバー認証証明書 | 鍵サーバーが Cloudflare に対して自身を証明するために使う証明書です。 | 鍵サーバーのホスト名のみ |
鍵サーバーを設定する前に、対応する SSL 証明書を Cloudflare のエッジへアップロードする必要があります。TLS 終端のとき、Cloudflare は接続元ブラウザーへこれらの証明書を提示し、(再開されていないセッションでは)指定した鍵サーバーと通信してハンドシェイクを完了します。
Cloudflare Keyless SSL で使う SAN だけを含む証明書を、Cloudflare へアップロードしてください。Keyless SSL のホスト名はすべて プロキシ済み である必要があります。
Keyless SSL で使う証明書は、それぞれアップロードする必要があります。
ダッシュボードで Keyless 証明書を作成するには、次の手順を行います。
-
Cloudflare ダッシュボードで Edge Certificates ページを開きます。
Edge Certificates を開く ↗ -
Upload Keyless SSL Certificate を選択します。
-
アップロード用のモーダルに証明書とその他の情報を入力し、Add を選択します。
| ラベル | 説明 | 値の例 |
|---|---|---|
| Key server label | 鍵サーバーを一意に識別する任意の名前です。 | “test-keyless”, “production-keyless-1” |
| Key server hostname | この証明書の鍵を保持する鍵サーバーのホスト名です(先に生成したランダムなホスト名など)。 | 11aa40b4a5db06d4889e48e2f738950ddfa50b7349d09b5f.example.com |
| Key server port | 鍵サーバー側で変更していない限り、2407 にします。 | 2407 |
| SSL Certificate | 秘密鍵を保持している、有効な X509v3 SSL 証明書(PEM 形式)です。 | (PEM bytes) |
| Bundle method | ほぼ常に Compatible にします。詳細は カスタム証明書のアップロード を参照してください。 | Compatible |
API で Keyless 証明書を作成するには、POST リクエストを送ります。
最後に、インフラストラクチャへキーサーバーをインストールし、Cloudflare のエッジで TLS を終端するために使う証明書の SSL キーを格納して、相互認証できるようにキーサーバーを有効化します。
これらの手順は Cloudflare パッケージリポジトリ ↗ にもあります。
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 gokeylesssudo 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 gokeylesssudo 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 gokeylesssudo 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 gokeylesssudo 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 gokeylesssudo 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 gokeylessGokeyless は PKCS#11/HSM 対応のために CGO を使うため、glibc への依存が発生します。ディストリビューションに合ったリポジトリを使ってください。
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo
sudo dnf install gokeylesscurl -fsSl https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeylesssudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo
sudo dnf install gokeylesscurl -fsSl https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeylessCloudflare アカウントの詳細を、/etc/keyless/gokeyless.yaml にある設定ファイルに追加します。
-
キーサーバーのホスト名を設定します。例:
11aa40b4a5db06d4889e48e2f.example.com。これは Keyless 証明書をアップロードしたときに入力した値でもあり、この証明書の鍵を保持するキーサーバーのホスト名です。 -
Zone ID を設定します(Cloudflare ダッシュボードの Overview タブにあります)。
-
サーバー証明書の登録用の認証資格情報を設定します。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
このコマンドが失敗した場合は、ログの確認 でトラブルシューティングしてください。
TLS ハンドシェイク中、Cloudflare の keyless クライアントは、証明書のアップロード時に指定した鍵サーバーのホスト名または IP アドレスへ接続を開始します。デフォルトの宛先 TCP ポートは 2407 です。この値は、証明書のアップロード時、またはアップロード後に証明書の詳細を編集して変更できます。
鍵サーバーが Cloudflare からの接続だけを受け付けるよう、WAF カスタムルールを作成します。Cloudflare の IPv4 および IPv6 アドレスは、IP details API エンドポイント で取得できます。