
# 接続に IdP 署名証明書を追加

`POST /v1/connections/{connection_id}/certificates` · 権限 `connections:write`

エンタープライズ SAML 接続に、IdP の署名証明書を追加します。証明書を手動でアップロードする場合や、証明書をローテーションする場合に使用します。まず新しい証明書を追加し、IdP を切り替えてから、古い証明書を [削除](delete.md) してください。ローテーションは有効な接続でも即座に反映されます。

証明書は 1 つの PEM `CERTIFICATE` ブロック（最大 8 KiB）である必要があります。期限切れであってはならず、2048 ビット以上の RSA 鍵、または ECDSA P-256、P-384、P-521 の鍵を持つ必要があります。拒否された場合、レスポンスは理由を示さず、理由も証明書の内容もログに記録されません。接続が持つ有効な証明書は最大 3 件です。接続から削除された証明書は再度追加できません。このリクエストは `If-Match` ヘッダーを受け付けません。書き込みは `connection.idp_certificate_added` として監査されます。

## リクエスト

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `connection_id` | パス | はい | エンタープライズ SAML 接続 ID（`conn_…`）。 |
| `certificate` | 文字列 | はい | PEM 証明書 1 件（`-----BEGIN CERTIFICATE-----` …）。最大 8 KiB。 |

## レスポンス

新しい証明書を含む `201 Created`（[証明書の一覧](list.md) を参照）。同じ証明書が既に接続に存在する場合は、登録済みの証明書を含む `200 OK` が返されます。この場合は何も書き込まれず、監査もされません。

```json
{"id": "conncert_01j9xq2m4n6p8r0s2t4v6w8y0a", "sha256_fingerprint": "3b0c…", "not_before": "2026-01-01T00:00:00Z", "not_after": "2028-01-01T00:00:00Z", "source": "manual"}
```

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 404 | `not_found` | この環境に接続が存在しない、またはエンタープライズ SAML 接続ではありません。 |
| 409 | `conflict` | 接続が SAML 接続でない、まだ SAML 設定がない、有効な証明書がすでに 3 件ある、またはこの証明書は以前に接続から削除されています。 |
| 422 | `validation_failed` | 証明書がない、大きすぎる、または受け付けられません。`errors[]` は `/certificate` を指します。ステージングおよび本番環境では、[ローカルモックサーバー](/docs/cli/mock-server) の公開テスト鍵に該当する証明書も拒否されます。 |
| 400 | `unknown_field` | 本文に未知のフィールドがあります。 |
| 401 | `unauthenticated` | 認証情報がない、無効、または取り消されています。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を待ってから再試行してください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。`Retry-After` の期間を待ってから再試行してください。 |

## 例

```bash
jq -Rs '{certificate: .}' idp-signing.pem > cert.json
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/certificates" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d @cert.json
```

```bash
keenauth connections certificates add conn_01j9xp6q0r1s5t7v9w1x3y5z7b --certificate-file idp-signing.pem
```
