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

124 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cert Authority 使用ガイド
## 概要
`cert-authority`は、PhotonCloudクラスタ内のmTLS通信に使用する証明書を発行・管理するツールです。
## 機能
1. **CA証明書の生成** (`init-ca`)
2. **証明書の発行** (`issue`)
3. **証明書ローテーションのチェック** (`check-rotation`)
## 使用方法
### 1. CA証明書の生成
初回セットアップ時に、ルートCA証明書とキーを生成します。
```bash
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. 証明書の発行
ノードまたはサービス用の証明書を発行します。
```bash
# ノード用証明書
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. 証明書ローテーションのチェック
証明書の有効期限をチェックし、ローテーションが必要かどうかを判定します。
```bash
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に記録されます
```json
{
"node_id": "node-01",
"service_name": null,
"cert_serial": "abc123...",
"issued_at": 1234567890,
"expires_at": 1234567890
}
```
この情報は、証明書の追跡やローテーション管理に使用されます。
## セキュリティ考慮事項
1. **CA秘密鍵の保護**: CA秘密鍵は厳重に管理し、アクセス権限を最小限に抑えてください。
2. **証明書の配布**: 発行された証明書と秘密鍵は、適切な権限で保護された場所に保存してください。
3. **ローテーション**: 定期的に証明書をローテーションし、古い証明書を無効化してください。
## 今後の拡張予定
- [ ] CSRパース機能の実装
- [ ] 証明書の自動ローテーション
- [ ] 証明書失効リストCRLのサポート
- [ ] SPIFFEライクなアイデンティティ検証