> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 加盟店公開鍵を設定する

> Waffo Dashboardに本番用の加盟店公開鍵をアップロードし、署名チャレンジと審査状況の確認を行います。

Waffoは、双方向RSA署名で本番API通信を保護します。Waffo Dashboard（Merchant Portal）に加盟店公開鍵をアップロードし、対応する秘密鍵を保有していることを検証します。

| 鍵        | 保有者   | 用途                       |
| -------- | ----- | ------------------------ |
| 加盟店秘密鍵   | 加盟店   | APIリクエストとWebhookレスポンスへ署名 |
| 加盟店公開鍵   | Waffo | 加盟店の署名を検証                |
| Waffo秘密鍵 | Waffo | APIレスポンスとWebhookへ署名      |
| Waffo公開鍵 | 加盟店   | Waffoの署名を検証              |

## 前提条件

* 本番アカウントを有効化している。
* ロールが **Super Admin**、**Admin**、または **Dev** である。
* 本番環境専用のRSAキーペアを生成している。
* 加盟店秘密鍵へ安全にアクセスできる。秘密鍵をDashboardへアップロードしたりWaffoへ送信したりしないでください。

## 公開鍵の要件

| 項目       | 要件                                     |
| -------- | -------------------------------------- |
| 鍵長       | 2048ビット                                |
| 署名アルゴリズム | `SHA256WithRSA`                        |
| 公開鍵形式    | PEMヘッダーとフッターを含まない、1行のX.509/SPKI Base64 |
| 公開鍵文字列長  | 392文字                                  |

## 本番キーペアを生成する

```bash theme={null}
openssl genpkey -algorithm RSA \
  -pkeyopt rsa_keygen_bits:2048 \
  -out merchant_private_key.pem

openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt \
  -in merchant_private_key.pem \
  | grep -v '^-----' \
  | tr -d '\n' > merchant_private_key.base64

openssl rsa -in merchant_private_key.pem -pubout \
  | grep -v '^-----' \
  | tr -d '\n' > merchant_public_key.base64
```

`merchant_public_key.base64` の内容をアップロードします。`merchant_private_key.pem` と `merchant_private_key.base64` はサーバー側の鍵管理システムに保存してください。

## 公開鍵を設定する

<Steps>
  <Step title="Dashboardにログインする">
    [Waffo Dashboard](https://dashboard.waffo.com/auth/login)を開き、**Settings → Integration** へ移動します。
  </Step>

  <Step title="設定を開始する">
    **Merchant Sign Configuration Details** で **Configure** をクリックし、**API Operation Type** を **Payin** に設定します。
  </Step>

  <Step title="公開鍵をアップロードする">
    完全な加盟店公開鍵を公開鍵入力欄へ貼り付けます。
  </Step>

  <Step title="検証署名を生成する">
    現在のMerchant用に生成された検証文字列をコピーします。対応する加盟店秘密鍵を使用し、`SHA256WithRSA` で署名します。

    ```bash theme={null}
    echo -n "WAFFO_VERIFY_XXXXXXXXXX" | \
      openssl dgst -sha256 -sign merchant_private_key.pem | \
      base64 | tr -d '\n'
    ```

    `WAFFO_VERIFY_XXXXXXXXXX` をDashboardに表示された完全な検証文字列へ置き換えてください。
  </Step>

  <Step title="審査へ提出する">
    1行のBase64署名結果を検証入力欄へ貼り付けます。**Confirm** をクリックし、確認ダイアログでもう一度 **Confirm** をクリックします。
  </Step>
</Steps>

## 審査状況を確認する

提出後、公開鍵のステータスは最初に **Pending** と表示されます。Waffoは通常1営業日以内に審査を完了し、結果をメールで通知します。

| ステータス        | 説明                       |
| ------------ | ------------------------ |
| **Pending**  | 提出済みでWaffoの審査待ち          |
| **Active**   | 有効化済みで本番APIリクエストに使用可能    |
| **Rejected** | 承認されていないため、理由を確認して再提出が必要 |

<Warning>
  公開鍵が **Active** になるまで、その鍵を使用して本番取引を送信しないでください。
</Warning>

## 公開鍵を追加またはローテーションする

新しい公開鍵の審査中も、既存の **Active** 公開鍵は有効です。新しい公開鍵が **Active** になってから、本番秘密鍵を切り替えてください。

新しい公開鍵が既存の **Active** 公開鍵と完全に同じ場合、Dashboardは `public key already exists` を返します。新しいキーペアを生成して再提出してください。

## Rejectedの公開鍵を再提出する

1. **Settings → Integration** を開きます。
2. **Historical Versions** で対象バージョンの **Reject Reason** を確認します。
3. 理由に基づいて鍵を再生成または修正します。
4. 公開鍵設定と署名検証を再度行います。

提出のたびに新しい履歴が作成され、既存の **Active** 公開鍵には影響しません。

## よくあるエラー

| エラー                              | 原因                                                | 対応方法                                  |
| -------------------------------- | ------------------------------------------------- | ------------------------------------- |
| `signature verification failed`  | 秘密鍵と公開鍵が一致しない、または署名が不完全、改行や空白を含む                  | キーペアを確認し、完全な1行のBase64署名を再生成する         |
| `public key count exceeds limit` | **API Operation Type** の **Active** 公開鍵数が上限に達している | 使用していない鍵の無効化をWaffoテクニカルサポートへ依頼する      |
| `public key record not found`    | 対象の公開鍵レコードが存在しない                                  | 履歴を更新し、問題が続く場合はスクリーンショットを添えてサポートへ連絡する |
| `public key already exists`      | 提出した鍵が既存の **Active** 公開鍵と同じ                       | 新しい公開鍵と秘密鍵のペアを生成する                    |

次へ：[本番移行](/docs/ja/developer-docs/getting-started/go-live)に戻り、本番注文を検証します。
