

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 memudahkan penggunaan 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 karena alasan kebijakan atau kepatuhan.

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

Fitur BYOCA memungkinkan Anda untuk menggunakan Otoritas Sertifikat Anda sendiri di mana pun sertifikat digunakan, termasuk impor/ekspor TR-34, RSA Unwrap, dan transfer kunci berbasis ECDH. Ini berguna ketika Anda perlu mempertahankan rantai sertifikat yang konsisten di seluruh organisasi Anda atau ketika bekerja dengan mitra yang memerlukan sertifikat CA tertentu. Contoh berikut menunjukkan alur kerja BYOCA menggunakan TR-34 kunci ekspor.

Tiga perbedaan utama dibandingkan dengan aliran ekspor TR-34 standar adalah:

1. Kunci RSA penandatanganan secara eksplisit dibuat menggunakan. [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) Sebelumnya, itu secara implisit dibuat melalui. [GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html)

1. API baru akan [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)membuat Certificate Signing Request (CSR) yang dapat ditandatangani oleh CA eksternal Anda.

1. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html)API diperluas untuk memungkinkan sertifikat disediakan saat runtime. Sebelumnya, ini secara implisit disediakan oleh`import-token`, yang menjadi bidang opsional.

**Pertimbangan Penting**  
Contoh-contoh ini menggunakan kunci RSA-2048 dan membungkus kunci TDES-2KEY. 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 BYOCA
<a name="keyexchange-byoca.workflow"></a>

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

**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: Kunci Ekspor 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 Anda base64 memecahkan kode konten dan menyimpannya, Anda akan memiliki CSR yang valid dalam format PEM.

**Example Hasilkan 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`Kolom berisi CSR berenkode base64 yang akan Anda kirim ke CA untuk ditandatangani.

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

Anda dapat secara opsional menggunakan OpenSSL 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 Certificate Authority (CA). Dalam lingkungan produksi, Anda biasanya akan menggunakan AWS Private CA atau infrastruktur CA yang didirikan organisasi Anda. Untuk tujuan pengujian, Anda dapat menggunakan OpenSSL untuk membuat sertifikat yang ditandatangani sendiri.

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

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

**Example Menandatangani 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 dalam langkah ekspor. Anda harus mengkodekannya dengan 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 Test CA 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 pengujian 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 masuk`signed-cert.pem`. Anda harus meng-base64-encode sertifikat ini 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 sertifikat arbitrer digunakan. 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 `TrustedPublicKey` alih-alih `RootCertificatePublicKey` dan tentukan root CA ARN.

**Example Impor Sertifikat Root 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"
    }
}
```

Perhatikan 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 Kriptografi AWS 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: Kunci Ekspor dengan BYOCA
<a name="keyexchange-byoca.export-key"></a>

Terakhir, ekspor kunci menggunakan TR-34 dengan sertifikat bertanda CA Anda sendiri menggunakan API. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) 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 impor TR-34 standar.

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