

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bawa Otoritas Sertifikat Anda Sendiri (BYOCA)
<a name="keyexchange-byoca"></a>

Secara default, ketika sertifikat kunci publik diperlukan untuk kunci asimetris (RSA, ECC) yang dibuat dalam layanan, sertifikat ini dikeluarkan oleh Kriptografi AWS Pembayaran dan otoritas sertifikat unik akun (CA). Ini dimaksudkan untuk membuatnya mudah digunakan X.509 tanpa beban mengidentifikasi atau menyiapkan CA atau mengelola Permintaan Penandatanganan Sertifikat (CSR).

AWS Kriptografi Pembayaran juga menyediakan kemampuan untuk menggunakan CA Anda sendiri ketika diperlukan untuk alasan kebijakan atau kepatuhan.

**Topics**
+ [Gambaran umum](#keyexchange-byoca.overview)
+ [Alur Kerja Ekspor BYOCA](#keyexchange-byoca.export-workflow)
+ [Alur Kerja Impor BYOCA](#keyexchange-byoca.import-workflow)
+ [Catatan Tambahan](#keyexchange-byoca.notes)

## Gambaran umum
<a name="keyexchange-byoca.overview"></a>

Dengan BYOCA, Anda dapat menggunakan CA Anda sendiri untuk TR-34 import/export, RSA Unwrap, dan transfer kunci ECDH. Gunakan BYOCA saat Anda memerlukan rantai sertifikat yang konsisten di seluruh organisasi Anda atau ketika mitra memerlukan sertifikat CA tertentu. Contoh berikut menunjukkan alur kerja BYOCA untuk ekspor TR-34 kunci dan impor TR-34 kunci.

Ada tiga perbedaan utama dari TR-34 aliran standar:

1. Anda membuat kunci RSA dengan [ CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). Sebelumnya, `GetParametersForExport` atau `GetParametersForImport` membuatnya untuk Anda.

1. [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)API membuat CSR. CA eksternal Anda kemudian dapat menandatanganinya.

1. [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)API [ ExportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) dan menerima sertifikat pada waktu panggilan. Token sekarang opsional.

**Pertimbangan Penting**  
Contoh-contoh ini menggunakan RSA-2048 kunci dan membungkus TDES-2KEY kunci. Saat mengekspor AES-128, pastikan semua kunci adalah RSA-3072 atau RSA-4096.
Kesalahan yang paling umum adalah bahwa kunci diwakili oleh `SigningKeyIdentifier` dan `SigningKeyCertificate` tidak cocok.

## Alur Kerja Ekspor BYOCA
<a name="keyexchange-byoca.export-workflow"></a>

Langkah-langkah berikut menunjukkan alur kerja BYOCA lengkap untuk TR-34 ekspor.

**Topics**
+ [Langkah 1: Buat Kunci RSA](#keyexchange-byoca.create-rsa)
+ [Langkah 2: Hasilkan Permintaan Penandatanganan Sertifikat](#keyexchange-byoca.generate-csr)
+ [Langkah 3: Tinjau CSR (Opsional)](#keyexchange-byoca.review-csr)
+ [Langkah 4: Tanda tangani CSR dengan Otoritas Sertifikat](#keyexchange-byoca.sign-csr)
+ [Langkah 5: Impor Sertifikat CA](#keyexchange-byoca.import-ca)
+ [Langkah 6: Dapatkan Sertifikat Enkripsi KRD](#keyexchange-byoca.get-krd)
+ [Langkah 7: Ekspor Kunci dengan BYOCA](#keyexchange-byoca.export-key)

### Langkah 1: Buat Kunci RSA
<a name="keyexchange-byoca.create-rsa"></a>

Pertama, buat Pasangan Kunci RSA yang pada akhirnya akan menjadi Sertifikat Penandatanganan KDH. Anda dapat menambahkan tag untuk mengidentifikasi tujuan kunci.

**Example Buat Kunci RSA untuk Penandatanganan**  

```
$ 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"
    }
}
```

Catat `KeyArn` karena Anda akan membutuhkannya di langkah berikutnya.

### Langkah 2: Hasilkan Permintaan Penandatanganan Sertifikat
<a name="keyexchange-byoca.generate-csr"></a>

Buat Permintaan Penandatanganan Sertifikat (CSR) untuk ditandatangani oleh CA eksternal Anda menggunakan [ GetCertificateSigningRequest ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API. Outputnya adalah file PEM yang dikodekan base64. Jika base64 memecahkan kode konten dan menyimpannya, Anda akan memiliki CSR yang valid dalam format PEM.

**Example Menghasilkan 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..."
}
```

Bid `CertificateSigningRequest` ang berisi seluruh file PEM, dikodekan base64. File PEM menyertakan pen `-----END CERTIFICATE REQUEST-----` anda `-----BEGIN CERTIFICATE REQUEST-----` dan. Kirim nilai ini ke CA Anda untuk ditandatangani.

### Langkah 3: Tinjau CSR (Opsional)
<a name="keyexchange-byoca.review-csr"></a>

Anda dapat menggunakan OpenSSL secara opsional untuk meninjau konten CSR dan memastikannya valid dan seperti yang diharapkan.

**Example Tinjau CSR dengan OpenSSL**  

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

### Langkah 4: Tanda tangani CSR dengan Otoritas Sertifikat
<a name="keyexchange-byoca.sign-csr"></a>

Setelah membuat CSR, Anda harus menandatanganinya oleh Otoritas Sertifikat (CA). Dalam lingkungan produksi, Anda biasanya akan menggunakan AWS Private CA atau infrastruktur CA organisasi Anda yang sudah mapan. Untuk tujuan pengujian, Anda dapat menggunakan OpenSSL untuk membuat sertifikat yang ditandatangani sendiri.

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

Untuk menandatangani CSR menggunakan AWS Private CA, pertama-tama decode CSR yang dikodekan base64 dan menyimpannya ke file, lalu gunakan API. [ IssueCertificate ](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html)

**Example Tanda tangani CSR dengan 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"
}
```

Kemudian ambil sertifikat yang ditandatangani:

**Example Ambil Sertifikat yang Ditandatangani**  

```
$ 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-----"
}
```

Simpan konten sertifikat untuk digunakan pada langkah ekspor. Anda harus mengkodekannya base64 saat menyediakannya ke API. `ExportKey`

#### Menggunakan OpenSSL untuk Pengujian
<a name="keyexchange-byoca.sign-csr-openssl"></a>

Untuk tujuan pengujian, Anda dapat menggunakan OpenSSL untuk membuat CA yang ditandatangani sendiri dan menandatangani CSR. Pertama, buat kunci pribadi CA dan sertifikat yang ditandatangani sendiri:

**Example Buat CA Uji dengan OpenSSL**  

```
$ # 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"
```

Kemudian dekode CSR dari langkah sebelumnya dan tandatangani dengan CA uji Anda:

**Example Menandatangani CSR dengan OpenSSL**  

```
$ # 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
```

Sertifikat yang ditandatangani sekarang sudah masuk`signed-cert.pem`. Anda harus mengkodekan sertifikat ini base64 saat memberikannya ke API: `ExportKey`

**Example Base64 Mengkodekan Sertifikat yang Ditandatangani**  

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

### Langkah 5: Impor Sertifikat CA
<a name="keyexchange-byoca.import-ca"></a>

Setiap CA yang digunakan harus dipercaya terlebih dahulu untuk mencegah penggunaan sertifikat sewenang-wenang. Impor sertifikat root CA eksternal Anda menggunakan [ ImportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API. Jika menggunakan CA perantara, panggil `import-key` lagi tetapi tentukan al `TrustedPublicKey` ih-alih `RootCertificatePublicKey` dan tentukan CA ARN root.

**Example Impor Sertifikat CA Root**  

```
$ 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"
    }
}
```

Catat CA `KeyArn` untuk digunakan dalam langkah ekspor.

### Langkah 6: Dapatkan Sertifikat Enkripsi KRD
<a name="keyexchange-byoca.get-krd"></a>

Dalam contoh ini, kami mengimpor kembali ke AWS Kriptografi Pembayaran, jadi kami memanggil layanan untuk menerima sertifikat kunci publik KRD menggunakan API. [ GetParametersForImport ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) Dalam skenario nyata, ini akan disediakan oleh sistem lain, seperti HSM, ATM, terminal pembayaran atau sistem manajemen terminal pembayaran.

**Example Dapatkan Parameter untuk Impor**  

```
$ 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"
}
```

### Langkah 7: Ekspor Kunci dengan BYOCA
<a name="keyexchange-byoca.export-key"></a>

Terakhir, ekspor kunci menggunakan TR-34 CA-signed sertifikat Anda sendiri menggunakan [ ExportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) API. Berikan sertifikat penandatanganan yang ditandatangani oleh CA eksternal Anda.

**Example TR-34 Ekspor dengan BYOCA**  

```
$ 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"
    }
}
```

Blok kunci yang diekspor sekarang dapat diimpor oleh sistem penerima menggunakan proses TR-34 impor standar.

## Alur Kerja Impor BYOCA
<a name="keyexchange-byoca.import-workflow"></a>

Langkah-langkah berikut memandu Anda melalui alur kerja BYOCA untuk impor TR-34 kunci. Gunakan alur kerja ini untuk menerima kunci ke Kriptografi AWS Pembayaran dengan sertifikat enkripsi CA-signed KRD (Key Receiver Device) Anda sendiri. Dengan impor BYOCA, Anda mengontrol rantai kepercayaan dengan menggunakan CA yang sudah Anda kelola.

**Topics**
+ [Langkah 1: Buat Kunci RSA](#keyexchange-byoca.import-create-rsa)
+ [Langkah 2: Hasilkan Permintaan Penandatanganan Sertifikat](#keyexchange-byoca.import-generate-csr)
+ [Langkah 3: Tinjau CSR (Opsional)](#keyexchange-byoca.import-review-csr)
+ [Langkah 4: Tanda tangani CSR dengan Otoritas Sertifikat](#keyexchange-byoca.import-sign-csr)
+ [Langkah 5: Impor Sertifikat CA](#keyexchange-byoca.import-ca)
+ [Langkah 6: Dapatkan Sertifikat Penandatanganan KDH dari Sistem Pengiriman](#keyexchange-byoca.import-get-kdh)
+ [Langkah 7: Impor Kunci dengan BYOCA](#keyexchange-byoca.import-key)

### Langkah 1: Buat Kunci RSA
<a name="keyexchange-byoca.import-create-rsa"></a>

Buat pasangan kunci RSA untuk digunakan sebagai kunci enkripsi KRD. Kunci ini membuka dan mendekripsi kunci masuk selama TR-34 impor. Kuncinya tidak dapat diekspor karena tetap berada di dalam layanan sebagai kunci penerima.

**Example Buat kunci enkripsi 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"
    }
}
```

Perhatikan nil `KeyArn` ainya. Anda membutuhkannya di langkah berikutnya.

### Langkah 2: Hasilkan Permintaan Penandatanganan Sertifikat
<a name="keyexchange-byoca.import-generate-csr"></a>

Buat Permintaan Penandatanganan Sertifikat (CSR) untuk kunci enkripsi KRD menggunakan API. [ GetCertificateSigningRequest ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) Outputnya adalah file PEM yang dikodekan base64. Jika base64 memecahkan kode konten dan menyimpannya, Anda akan memiliki CSR yang valid dalam format PEM.

**Example Hasilkan CSR untuk KRD Key**  

```
$ 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..."
}
```

Bid `CertificateSigningRequest` ang berisi seluruh file PEM, dikodekan base64. File PEM menyertakan pen `-----END CERTIFICATE REQUEST-----` anda `-----BEGIN CERTIFICATE REQUEST-----` dan. Kirim nilai ini ke CA Anda untuk ditandatangani.

### Langkah 3: Tinjau CSR (Opsional)
<a name="keyexchange-byoca.import-review-csr"></a>

Anda dapat menggunakan OpenSSL secara opsional untuk meninjau konten CSR dan memastikannya valid dan seperti yang diharapkan.

**Example Tinjau CSR dengan OpenSSL**  

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

### Langkah 4: Tanda tangani CSR dengan Otoritas Sertifikat
<a name="keyexchange-byoca.import-sign-csr"></a>

Setelah Anda membuat CSR, mintalah ditandatangani oleh Otoritas Sertifikat (CA). Dalam lingkungan produksi, Anda biasanya akan menggunakan AWS Private CA atau infrastruktur CA organisasi Anda yang sudah mapan. Untuk tujuan pengujian, Anda dapat menggunakan OpenSSL untuk membuat sertifikat yang ditandatangani sendiri.

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

Untuk menandatangani CSR menggunakan AWS Private CA, pertama-tama decode CSR yang dikodekan base64 dan menyimpannya ke file, lalu gunakan API. [ IssueCertificate ](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html)

**Example Tanda tangani CSR dengan 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"
}
```

Kemudian ambil sertifikat yang ditandatangani:

**Example Ambil Sertifikat yang Ditandatangani**  

```
$ 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-----"
}
```

Simpan konten sertifikat untuk digunakan pada langkah impor. Base64-encode sertifikat sebelum memberikannya ke `ImportKey` API.

#### Menggunakan OpenSSL untuk Pengujian
<a name="keyexchange-byoca.import-sign-csr-openssl"></a>

Untuk tujuan pengujian, Anda dapat menggunakan OpenSSL untuk membuat CA yang ditandatangani sendiri dan menandatangani CSR. Pertama, buat kunci pribadi CA dan sertifikat yang ditandatangani sendiri:

**Example Buat CA Uji dengan OpenSSL**  

```
$ # 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"
```

Kemudian dekode CSR dari langkah sebelumnya dan tandatangani dengan CA uji Anda:

**Example Menandatangani CSR dengan OpenSSL**  

```
$ # 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
```

Sertifikat yang ditandatangani sekarang sudah masuk`krd-signed-cert.pem`. Base64-encode sertifikat ini sebelum memberikannya ke `ImportKey` API:

**Example Base64 Mengkodekan Sertifikat yang Ditandatangani**  

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

### Langkah 5: Impor Sertifikat CA
<a name="keyexchange-byoca.import-ca"></a>

Sebelum Anda menggunakan CA, Anda harus mempercayainya terlebih dahulu. Impor sertifikat root CA eksternal Anda menggunakan [ ImportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API. Jika menggunakan CA perantara, panggil `import-key` lagi tetapi tentukan al `TrustedPublicKey` ih-alih `RootCertificatePublicKey` dan tentukan CA ARN root.

**Example Impor Sertifikat CA Root**  

```
$ 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"
    }
}
```

Perhatikan CA `KeyArn` untuk digunakan pada langkah impor.

### Langkah 6: Dapatkan Sertifikat Penandatanganan KDH dari Sistem Pengiriman
<a name="keyexchange-byoca.import-get-kdh"></a>

Dalam pertukaran TR-34 kunci, pihak pengirim (Host Distribusi Kunci, atau KDH) menyediakan sertifikat kunci publik untuk penandatanganan. Sertifikat ini digunakan untuk memverifikasi tanda tangan pada blok kunci yang dibungkus selama impor, memastikan materi kunci berasal dari pengirim tepercaya. Dalam produksi, sertifikat ini biasanya berasal dari sistem pengirim—seperti HSM, terminal pembayaran, atau sistem manajemen kunci—melalui proses distribusi sertifikatnya sendiri.

Dalam contoh ini, Anda menggunakan Kriptografi AWS Pembayaran sebagai pengirim dan penerima agar langkah-langkahnya tetap singkat. Panggil [ GetParametersForExport ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html) untuk mendapatkan sertifikat penandatanganan KDH yang biasanya disediakan oleh sistem pengirim.

**Example Dapatkan Parameter untuk Ekspor**  

```
$ 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"
}
```

Perhatikan `ExportToken` dan `SigningKeyCertificate` untuk digunakan dalam langkah impor.

### Langkah 7: Impor Kunci dengan BYOCA
<a name="keyexchange-byoca.import-key"></a>

Terakhir, impor kunci menggunakan TR-34 CA-signed sertifikat Anda sendiri menggunakan `ImportKey` API. Berikan sertifikat enkripsi KRD yang ditandatangani oleh CA eksternal Anda.

`RandomNonce`Parameter diperlukan saat menggunakan 2-pass TR-34. Layanan tidak menghasilkan nonce untuk Anda—ini adalah nilai hex acak yang Anda hasilkan, dan itu harus sama di sisi pengirim dan penerima. Saat menggunakan 1-pass TR-34 (yang bergantung pada stempel waktu alih-alih nonce), stempel waktu tidak boleh ada di masa mendatang. Layanan ini tidak memvalidasi kesegaran tertentu (misalnya, dalam jumlah jam tertentu), tetapi Anda dapat menerapkan pemeriksaan kesegaran di pihak Anda jika diperlukan.

**Example TR-34 Impor dengan BYOCA**  

```
$ 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"
    }
}
```

Kunci sekarang diimpor ke Kriptografi AWS Pembayaran dan siap digunakan. Bid `KeyOrigin` ang `EXTERNAL` menunjukkan bahwa kunci berasal dari luar layanan.

## Catatan Tambahan
<a name="keyexchange-byoca.notes"></a>
+ Contoh-contoh ini ditampilkan menggunakan AWS CLI. Fungsionalitas yang sama tersedia di semua AWS SDK termasuk Java, Python, Go, dan Rust.
+ Jika Anda menguji dengan CA yang ditandatangani sendiri, Anda dapat menggunakan OpenSSL untuk membuat CA uji dan menandatangani CSR. Dalam produksi, gunakan infrastruktur CA organisasi Anda yang sudah mapan.