photoncloud-monorepo/docs/cert-authority-usage.md

3.9 KiB
Raw Blame History

Cert Authority 使用ガイド

概要

cert-authorityは、PhotonCloudクラスタ内のmTLS通信に使用する証明書を発行・管理するツールです。

機能

  1. CA証明書の生成 (init-ca)
  2. 証明書の発行 (issue)
  3. 証明書ローテーションのチェック (check-rotation)

使用方法

1. CA証明書の生成

初回セットアップ時に、ルートCA証明書とキーを生成します。

cert-authority \
    --chainfire-endpoint http://localhost:2379 \
    --cluster-id test-cluster-01 \
    --ca-cert-path /etc/photoncloud/ca.crt \
    --ca-key-path /etc/photoncloud/ca.key \
    init-ca

これにより、以下のファイルが生成されます:

  • /etc/photoncloud/ca.crt: CA証明書PEM形式
  • /etc/photoncloud/ca.key: CA秘密鍵PEM形式

2. 証明書の発行

ノードまたはサービス用の証明書を発行します。

# ノード用証明書
cert-authority \
    --chainfire-endpoint http://localhost:2379 \
    --cluster-id test-cluster-01 \
    --ca-cert-path /etc/photoncloud/ca.crt \
    --ca-key-path /etc/photoncloud/ca.key \
    issue \
    --csr-path /tmp/node-01.csr \
    --cert-path /etc/photoncloud/node-01.crt \
    --node-id node-01

# サービス用証明書
cert-authority \
    --chainfire-endpoint http://localhost:2379 \
    --cluster-id test-cluster-01 \
    --ca-cert-path /etc/photoncloud/ca.crt \
    --ca-key-path /etc/photoncloud/ca.key \
    issue \
    --csr-path /tmp/api-server.csr \
    --cert-path /etc/photoncloud/api-server.crt \
    --service-name api-server

注意: 現在の実装では、CSRファイルは読み込まれず、新しいキーペアが自動生成されます。CSRパース機能は今後の拡張予定です。

発行された証明書は以下の場所に保存されます:

  • {cert_path}: 証明書PEM形式
  • {cert_path}.key: 秘密鍵PEM形式

また、証明書バインディング情報がChainfireに記録されます

  • キー: photoncloud/clusters/{cluster_id}/mtls/certs/{node_id or service_name}/...
  • 値: CertificateBinding JSONシリアル番号、発行日時、有効期限など

3. 証明書ローテーションのチェック

証明書の有効期限をチェックし、ローテーションが必要かどうかを判定します。

cert-authority \
    --chainfire-endpoint http://localhost:2379 \
    --cluster-id test-cluster-01 \
    --ca-cert-path /etc/photoncloud/ca.crt \
    --ca-key-path /etc/photoncloud/ca.key \
    check-rotation \
    --cert-path /etc/photoncloud/node-01.crt

有効期限が30日以内の場合、警告が表示されます。

証明書の有効期限

  • デフォルトTTL: 90日
  • ローテーション推奨期間: 30日

これらの値はdeployer/crates/cert-authority/src/main.rsの定数で定義されています:

  • CERT_TTL_DAYS: 90
  • ROTATION_THRESHOLD_DAYS: 30

Chainfire統合

証明書発行時、以下の情報がChainfireに記録されます

{
  "node_id": "node-01",
  "service_name": null,
  "cert_serial": "abc123...",
  "issued_at": 1234567890,
  "expires_at": 1234567890
}

この情報は、証明書の追跡やローテーション管理に使用されます。

セキュリティ考慮事項

  1. CA秘密鍵の保護: CA秘密鍵は厳重に管理し、アクセス権限を最小限に抑えてください。
  2. 証明書の配布: 発行された証明書と秘密鍵は、適切な権限で保護された場所に保存してください。
  3. ローテーション: 定期的に証明書をローテーションし、古い証明書を無効化してください。

今後の拡張予定

  • CSRパース機能の実装
  • 証明書の自動ローテーション
  • 証明書失効リストCRLのサポート
  • SPIFFEライクなアイデンティティ検証