

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Bring Your Own Certificate Authority (BY")
<a name="keyexchange-byoca"></a>

デフォルトでは、サービス内で作成された非対称 (RSA,ECC) キーにパブリックキー証明書が必要な場合、これらの証明書は AWS Payment Cryptography とアカウント固有の認証機関 (CA) によって発行されます。これは、CA を特定または設定したり、証明書署名リクエスト (CSR) を管理したりする負担をかけずに、X.509 を簡単に使用できるようにすることを目的としています。

AWS Payment Cryptography では、ポリシーまたはコンプライアンスの理由で必要なときに、独自の CA を使用することもできます。

**Topics**
+ [概要](#keyexchange-byoca.overview)
+ [BY" エクスポートワークフロー](#keyexchange-byoca.export-workflow)
+ [BY" インポートワークフロー](#keyexchange-byoca.import-workflow)
+ [追加のメモ](#keyexchange-byoca.notes)

## 概要
<a name="keyexchange-byoca.overview"></a>

BY" を使用すると、TR-34 のインポート/エクスポート、RSA Unwrap、ECDH キー転送に独自の CA を使用できます。組織全体で一貫した証明書チェーンが必要な場合、またはパートナーが特定の CA 証明書を必要とする場合は、BY" を使用します。次の例は、TR-34 キーのエクスポートと TR-34 キーのインポートの BY" ワークフローを示しています。

標準の TR-34 フローとの主な違いは 3 つあります。

1. [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) を使用して RSA キーを作成します。以前に、`GetParametersForExport`または自分で`GetParametersForImport`作成しました。

1. [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API は CSR を作成します。その後、外部 CA が署名できます。

1. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) API と [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) APIsを受け入れます。トークンはオプションになりました。

**重要な考慮事項**  
これらの例では、RSA-2048 キーを使用して TDES-2KEY キーをラップします。AES-128 をエクスポートするときは、すべてのキーが RSA-3072 または RSA-4096 であることを確認します。
最も一般的なエラーは、 `SigningKeyIdentifier`と で表されるキー`SigningKeyCertificate`が一致しないことです。

## BY" エクスポートワークフロー
<a name="keyexchange-byoca.export-workflow"></a>

次の手順は、TR-34 エクスポートの完全な BY" ワークフローを示しています。

**Topics**
+ [ステップ 1: RSA キーを作成する](#keyexchange-byoca.create-rsa)
+ [ステップ 2: 証明書署名リクエストを生成する](#keyexchange-byoca.generate-csr)
+ [ステップ 3: CSR を確認する (オプション)](#keyexchange-byoca.review-csr)
+ [ステップ 4: 認証機関で CSR に署名する](#keyexchange-byoca.sign-csr)
+ [ステップ 5: CA 証明書をインポートする](#keyexchange-byoca.import-ca)
+ [ステップ 6: KRD 暗号化証明書を取得する](#keyexchange-byoca.get-krd)
+ [ステップ 7: BY" を使用してキーをエクスポートする](#keyexchange-byoca.export-key)

### ステップ 1: RSA キーを作成する
<a name="keyexchange-byoca.create-rsa"></a>

まず、最終的に KDH 署名証明書となる RSA キーペアを作成します。タグを追加して、キーの目的を特定できます。

**Example 署名用の RSA キーを作成する**  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=RSA_2048,KeyUsage=TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{Sign=True}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyAlgorithm": "RSA_2048",
            "KeyModesOfUse": {
                "Sign": true
            }
        },
        "KeyCheckValue": "41E3723C",
        "KeyCheckValueAlgorithm": "SHA_1",
        "Enabled": true,
        "Exportable": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY"
    }
}
```

次のステップで必要になる`KeyArn`ため、 に注意してください。

### ステップ 2: 証明書署名リクエストを生成する
<a name="keyexchange-byoca.generate-csr"></a>

[GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API を使用して、外部 CA によって署名される証明書署名リクエスト (CSR) を生成します。出力は base64 でエンコードされた PEM ファイルです。base64 でコンテンツをデコードして保存すると、PEM 形式で有効な CSR が作成されます。

**Example CSR の生成**  

```
$ aws payment-cryptography-data get-certificate-signing-request \
    --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc \
    --signing-algorithm SHA512 \
    --certificate-subject '{
        "CommonName": "MyCertificateAWSUSEAST",
        "Organization": "Amazon",
        "OrganizationUnit": "PaymentCryptography",
        "Country": "US",
        "StateOrProvince": "Virginia",
        "City": "Arlington"
    }'
```

```
{
    "CertificateSigningRequest": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..."
}
```

`CertificateSigningRequest` フィールドには、base64 でエンコードされた PEM ファイル全体が含まれます。PEM ファイルには、 マーカー`-----BEGIN CERTIFICATE REQUEST-----`と `-----END CERTIFICATE REQUEST-----`マーカーが含まれています。この値を CA に送信して署名します。

### ステップ 3: CSR を確認する (オプション)
<a name="keyexchange-byoca.review-csr"></a>

オプションで OpenSSL を使用して CSR の内容を確認し、有効で期待どおりに動作することを確認できます。

**Example OpenSSL で CSR を確認する**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
```

### ステップ 4: 認証機関で CSR に署名する
<a name="keyexchange-byoca.sign-csr"></a>

CSR を生成したら、認証機関 (CA) による署名が必要です。本番環境では、通常、 AWS Private CA または組織が確立した CA インフラストラクチャを使用します。テスト目的で、OpenSSL を使用して自己署名証明書を作成できます。

#### の使用 AWS Private CA
<a name="keyexchange-byoca.sign-csr-pca"></a>

を使用して CSR に署名するには AWS Private CA、まず base64 でエンコードされた CSR をデコードし、ファイルに保存します。次に [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) API を使用します。

**Example で CSR に署名する AWS Private CA**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ aws acm-pca issue-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --csr fileb://csr.pem \
    --signing-algorithm SHA256WITHRSA \
    --validity Value=365,Type=DAYS
```

```
{
    "CertificateArn": "arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890"
}
```

次に、署名付き証明書を取得します。

**Example 署名付き証明書の取得**  

```
$ aws acm-pca get-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --certificate-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890
```

```
{
    "Certificate": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
    "CertificateChain": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----"
}
```

エクスポートステップで使用する証明書コンテンツを保存します。`ExportKey` API に提供するときは、base64 エンコードする必要があります。

#### OpenSSL を使用したテスト
<a name="keyexchange-byoca.sign-csr-openssl"></a>

テスト目的で、OpenSSL を使用して自己署名 CA を作成し、CSR に署名できます。まず、CA プライベートキーと自己署名証明書を作成します。

**Example OpenSSL を使用してテスト CA を作成する**  

```
$ # Generate CA private key
openssl genrsa -out ca-key.pem 4096

$ # Create self-signed CA certificate
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem \
    -subj "/C=US/ST=Virginia/L=Arlington/O=TestOrg/CN=Test CA"
```

次に、前のステップから CSR をデコードし、テスト CA で署名します。

**Example OpenSSL で CSR に署名する**  

```
$ # Decode the base64-encoded CSR
echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ # Sign the CSR with the CA
openssl x509 -req -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem \
    -CAcreateserial -out signed-cert.pem -days 365 -sha512
```

```
Certificate request self-signature ok
subject=C=US, ST=Virginia, L=Arlington, O=Amazon, OU=PaymentCryptography, CN=MyCertificateAWSUSEAST
```

署名付き証明書が になりました`signed-cert.pem`。`ExportKey` API に提供するときは、この証明書を base64 でエンコードする必要があります。

**Example Base64 署名付き証明書をエンコードする**  

```
$ cat signed-cert.pem | base64 -w 0
```

### ステップ 5: CA 証明書をインポートする
<a name="keyexchange-byoca.import-ca"></a>

使用する CA は、任意の証明書が使用されないように最初に信頼する必要があります。[ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API を使用して外部 CA のルート証明書をインポートします。中間 CA を使用する場合は、 `import-key`を再度呼び出しますが、 `TrustedPublicKey`の代わりに を指定`RootCertificatePublicKey`し、ルート CA ARN を指定します。

**Example ルート CA 証明書をインポートする**  

```
$ aws payment-cryptography import-key --key-material='{
    "RootCertificatePublicKey": {
        "KeyAttributes": {
            "KeyAlgorithm": "RSA_4096",
            "KeyClass": "PUBLIC_KEY",
            "KeyModesOfUse": {
                "Verify": true
            },
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
        },
        "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
    }
}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xivpaqy7qbbm7cdw",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "PUBLIC_KEY",
            "KeyAlgorithm": "RSA_4096",
            "KeyModesOfUse": {
                "Verify": true
            }
        },
        "Enabled": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "EXTERNAL"
    }
}
```

エクスポートステップ`KeyArn`で使用する CA を書き留めます。

### ステップ 6: KRD 暗号化証明書を取得する
<a name="keyexchange-byoca.get-krd"></a>

この例では、 AWS Payment Cryptography にインポートし直すため、 サービスを呼び出して、[GetParametersForImport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) API を使用して KRD パブリックキー証明書を受け取ります。実際のシナリオでは、これは HSM、ATM、支払い端末、支払い端末管理システムなどの他のシステムによって提供されます。

**Example インポートのパラメーターを取得する**  

```
$ aws payment-cryptography-data get-parameters-for-import \
    --key-material-type "TR34_KEY_BLOCK" \
    --wrapping-key-algorithm RSA_2048
```

```
{
    "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyAlgorithm": "RSA_2048",
    "ImportToken": "import-token-v2rxpl6drxeptn7w",
    "ParametersValidUntilTimestamp": "2025-11-01T18:45:31.271000-07:00"
}
```

### ステップ 7: BY" を使用してキーをエクスポートする
<a name="keyexchange-byoca.export-key"></a>

最後に、[ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) API を使用して独自の CA 署名証明書で TR-34 を使用してキーをエクスポートします。外部 CA によって署名された署名証明書を指定します。

**Example BY" を使用した TR-34 エクスポート**  

```
$ aws payment-cryptography-data export-key \
    --export-key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/iox73p5f4c4yjiod \
    --key-material '{
        "Tr34KeyBlock": {
            "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/j625deyfqlwctu57",
            "SigningKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
            "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
            "KeyBlockFormat": "X9_TR34_2012",
            "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
        }
    }'
```

```
{
    "WrappedKey": {
        "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK",
        "KeyMaterial": "3082055A06092A864886F70D010702A082054B30820547...",
        "KeyCheckValue": "3DCA31",
        "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

エクスポートされたキーブロックは、標準の TR-34 インポートプロセスを使用して受信システムによってインポートできるようになりました。

## BY" インポートワークフロー
<a name="keyexchange-byoca.import-workflow"></a>

次の手順では、TR-34 キーのインポートに関する BY" ワークフローについて説明します。このワークフローを使用して、独自の CA 署名 KRD (キー受信デバイス) 暗号化証明書を使用して AWS Payment Cryptography にキーを受け取ります。BY" インポートでは、既に管理している CA を使用して信頼チェーンを制御します。

**Topics**
+ [ステップ 1: RSA キーを作成する](#keyexchange-byoca.import-create-rsa)
+ [ステップ 2: 証明書署名リクエストを生成する](#keyexchange-byoca.import-generate-csr)
+ [ステップ 3: CSR を確認する (オプション)](#keyexchange-byoca.import-review-csr)
+ [ステップ 4: 認証機関で CSR に署名する](#keyexchange-byoca.import-sign-csr)
+ [ステップ 5: CA 証明書をインポートする](#keyexchange-byoca.import-ca)
+ [ステップ 6: 送信システムから KDH 署名証明書を取得する](#keyexchange-byoca.import-get-kdh)
+ [ステップ 7: BY" を使用してキーをインポートする](#keyexchange-byoca.import-key)

### ステップ 1: RSA キーを作成する
<a name="keyexchange-byoca.import-create-rsa"></a>

KRD 暗号化キーとして使用する RSA キーペアを作成します。このキーは、TR-34 インポート中に受信キーをラップ解除して復号します。キーは受信キーとしてサービス内に留まるため、エクスポートできません。

**Example KRD 暗号化キーを作成する**  

```
$ aws payment-cryptography create-key \
    --key-attributes KeyAlgorithm=RSA_2048,KeyUsage=TR31_K2_TR34_ASYMMETRIC_KEY,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{Unwrap=True,Decrypt=True}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/bm7t4qv8hzk24jce",
        "KeyAttributes": {
            "KeyUsage": "TR31_K2_TR34_ASYMMETRIC_KEY",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyAlgorithm": "RSA_2048",
            "KeyModesOfUse": {
                "Unwrap": true,
                "Decrypt": true
            }
        },
        "KeyCheckValue": "7FA29C1E",
        "KeyCheckValueAlgorithm": "SHA_1",
        "Enabled": true,
        "Exportable": false,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY"
    }
}
```

[`KeyArn`] の値を書き留めます。それは次の手順で必要となります。

### ステップ 2: 証明書署名リクエストを生成する
<a name="keyexchange-byoca.import-generate-csr"></a>

[GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API を使用して、KRD 暗号化キーの証明書署名リクエスト (CSR) を生成します。出力は base64 でエンコードされた PEM ファイルです。base64 でコンテンツをデコードして保存すると、PEM 形式で有効な CSR が作成されます。

**Example KRD キーの CSR を生成する**  

```
$ aws payment-cryptography-data get-certificate-signing-request \
    --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/bm7t4qv8hzk24jce \
    --signing-algorithm SHA512 \
    --certificate-subject '{
        "CommonName": "MyImportKRDCertAWSUSEAST",
        "Organization": "Amazon",
        "OrganizationUnit": "PaymentCryptography",
        "Country": "US",
        "StateOrProvince": "Virginia",
        "City": "Arlington"
    }'
```

```
{
    "CertificateSigningRequest": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..."
}
```

`CertificateSigningRequest` フィールドには、base64 でエンコードされた PEM ファイル全体が含まれます。PEM ファイルには、 マーカー`-----BEGIN CERTIFICATE REQUEST-----`と `-----END CERTIFICATE REQUEST-----`マーカーが含まれています。この値を CA に送信して署名します。

### ステップ 3: CSR を確認する (オプション)
<a name="keyexchange-byoca.import-review-csr"></a>

オプションで OpenSSL を使用して CSR の内容を確認し、有効で期待どおりに動作することを確認できます。

**Example OpenSSL で CSR を確認する**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
```

### ステップ 4: 認証機関で CSR に署名する
<a name="keyexchange-byoca.import-sign-csr"></a>

CSR を生成したら、認証機関 (CA) から署名してもらいます。本番環境では、通常、 AWS Private CA または組織が確立した CA インフラストラクチャを使用します。テスト目的で、OpenSSL を使用して自己署名証明書を作成できます。

#### の使用 AWS Private CA
<a name="keyexchange-byoca.import-sign-csr-pca"></a>

を使用して CSR に署名するには AWS Private CA、まず base64 でエンコードされた CSR をデコードし、ファイルに保存します。次に [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) API を使用します。

**Example で CSR に署名する AWS Private CA**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > krd-csr.pem

$ aws acm-pca issue-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --csr fileb://krd-csr.pem \
    --signing-algorithm SHA256WITHRSA \
    --validity Value=365,Type=DAYS
```

```
{
    "CertificateArn": "arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/fedcba0987654321"
}
```

次に、署名付き証明書を取得します。

**Example 署名付き証明書の取得**  

```
$ aws acm-pca get-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --certificate-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/fedcba0987654321
```

```
{
    "Certificate": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
    "CertificateChain": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----"
}
```

インポートステップで使用する証明書コンテンツを保存します。証明書を `ImportKey` API に提供する前に Base64-encodeします。

#### OpenSSL を使用したテスト
<a name="keyexchange-byoca.import-sign-csr-openssl"></a>

テスト目的で、OpenSSL を使用して自己署名 CA を作成し、CSR に署名できます。まず、CA プライベートキーと自己署名証明書を作成します。

**Example OpenSSL を使用してテスト CA を作成する**  

```
$ # Generate CA private key
openssl genrsa -out ca-key.pem 4096

$ # Create self-signed CA certificate
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem \
    -subj "/C=US/ST=Virginia/L=Arlington/O=TestOrg/CN=Test CA"
```

次に、前のステップから CSR をデコードし、テスト CA で署名します。

**Example OpenSSL で CSR に署名する**  

```
$ # Decode the base64-encoded CSR
echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > krd-csr.pem

$ # Sign the CSR with the CA
openssl x509 -req -in krd-csr.pem -CA ca-cert.pem -CAkey ca-key.pem \
    -CAcreateserial -out krd-signed-cert.pem -days 365 -sha512
```

```
Certificate request self-signature ok
subject=C=US, ST=Virginia, L=Arlington, O=Amazon, OU=PaymentCryptography, CN=MyImportKRDCertAWSUSEAST
```

署名付き証明書が になりました`krd-signed-cert.pem`。`ImportKey` API に提供する前に、この証明書を Base64-encodeします。

**Example Base64 署名付き証明書をエンコードする**  

```
$ cat krd-signed-cert.pem | base64 -w 0
```

### ステップ 5: CA 証明書をインポートする
<a name="keyexchange-byoca.import-ca"></a>

CA を使用する前に、まず CA を信頼する必要があります。[ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API を使用して外部 CA のルート証明書をインポートします。中間 CA を使用する場合は、 `import-key`を再度呼び出しますが、 `TrustedPublicKey`の代わりに を指定`RootCertificatePublicKey`し、ルート CA ARN を指定します。

**Example ルート CA 証明書をインポートする**  

```
$ aws payment-cryptography import-key --key-material='{
    "RootCertificatePublicKey": {
        "KeyAttributes": {
            "KeyAlgorithm": "RSA_4096",
            "KeyClass": "PUBLIC_KEY",
            "KeyModesOfUse": {
                "Verify": true
            },
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
        },
        "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
    }
}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/nqr3c5v2wp6yl8az",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "PUBLIC_KEY",
            "KeyAlgorithm": "RSA_4096",
            "KeyModesOfUse": {
                "Verify": true
            }
        },
        "Enabled": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "EXTERNAL"
    }
}
```

インポートステップ`KeyArn`で使用する CA を書き留めます。

### ステップ 6: 送信システムから KDH 署名証明書を取得する
<a name="keyexchange-byoca.import-get-kdh"></a>

TR-34 キー交換では、送信側 (キーディストリビューションホスト、または KDH) は署名用のパブリックキー証明書を提供します。この証明書は、インポート中にラップされたキーブロックの署名を検証し、キーマテリアルが信頼できる送信者から送信されたことを確認するために使用されます。本番環境では、この証明書は通常、HSM、支払いターミナル、キー管理システムなどの送信システムから、独自の証明書配布プロセスを通じて取得されます。

この例では、送信者と受信者の両方として AWS Payment Cryptography を使用してステップを短くします。[GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html) を呼び出して、通常は送信システムによって提供される KDH 署名証明書を取得します。

**Example エクスポートのパラメータを取得する**  

```
$ aws payment-cryptography-data get-parameters-for-export \
    --key-material-type "TR34_KEY_BLOCK" \
    --signing-key-algorithm RSA_2048
```

```
{
    "ExportToken": "export-token-k8sfhe2w9rjy4bx6",
    "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "SigningKeyAlgorithm": "RSA_2048",
    "ParametersValidUntilTimestamp": "2025-11-01T18:45:31.271000-07:00"
}
```

インポートステップで使用する `SigningKeyCertificate` `ExportToken`と に注意してください。

### ステップ 7: BY" を使用してキーをインポートする
<a name="keyexchange-byoca.import-key"></a>

最後に、`ImportKey`API を使用して独自の CA 署名証明書で TR-34 を使用してキーをインポートします。外部 CA によって署名された KRD 暗号化証明書を指定します。

2 パス TR-34 を使用する場合は、 `RandomNonce`パラメータが必要です。サービスはノンスを生成しません。これは生成するランダムな 16 進値であり、送信側と受信側の両方で同じである必要があります。1 パス TR-34 (nonce ではなくタイムスタンプに依存する) を使用する場合、タイムスタンプは将来のものであってはなりません。サービスは特定の鮮度 (たとえば、特定の時間内) を検証しませんが、必要に応じて鮮度チェックをユーザー側に適用できます。

**Example BY" を使用した TR-34 のインポート**  

```
$ aws payment-cryptography import-key --key-material='{
    "Tr34KeyBlock": {
        "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/nqr3c5v2wp6yl8az",
        "KeyBlockFormat": "X9_TR34_2012",
        "RandomNonce": "4997FBB4587D571F",
        "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
        "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
        "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/bm7t4qv8hzk24jce",
        "WrappedKeyBlock": "D0112B0AX00E0000B82679114F470F540165EDFBF407..."
    }
}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/gwz7u3rfxd4o52sb",
        "KeyAttributes": {
            "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyAlgorithm": "TDES_2KEY",
            "KeyModesOfUse": {
                "Encrypt": true,
                "Decrypt": true
            }
        },
        "KeyCheckValue": "3DCA31",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": true,
        "Exportable": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "EXTERNAL"
    }
}
```

これで、キーは AWS Payment Cryptography にインポートされ、使用できるようになります。`KeyOrigin` フィールドには、キーがサービス外から送信された`EXTERNAL`ことを示します。

## 追加のメモ
<a name="keyexchange-byoca.notes"></a>
+ これらの例は、AWS CLI を使用して示されています。Java、Python、Go、Rust を含むすべての AWS SDKs で同じ機能を使用できます。
+ 自己署名 CA でテストする場合は、OpenSSL を使用してテスト CA を作成し、CSR に署名できます。本番環境では、組織で確立された CA インフラストラクチャを使用します。