Bawa Otoritas Sertifikat Anda Sendiri (BYOCA) - AWS Kriptografi Pembayaran

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)

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

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 Sebelumnya, itu secara implisit dibuat melalui. GetParametersForExport

  2. API baru akan GetCertificateSigningRequestmembuat Certificate Signing Request (CSR) yang dapat ditandatangani oleh CA eksternal Anda.

  3. ExportKeyAPI diperluas untuk memungkinkan sertifikat disediakan saat runtime. Sebelumnya, ini secara implisit disediakan olehimport-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

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

Langkah 1: Buat Kunci RSA

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

contoh 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

Buat Permintaan Penandatanganan Sertifikat (CSR) untuk ditandatangani oleh CA eksternal Anda menggunakan GetCertificateSigningRequestAPI. Outputnya adalah file PEM yang dikodekan base64. Jika Anda base64 memecahkan kode konten dan menyimpannya, Anda akan memiliki CSR yang valid dalam format PEM.

contoh 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..." }

CertificateSigningRequestKolom berisi CSR berenkode base64 yang akan Anda kirim ke CA untuk ditandatangani.

Langkah 3: Tinjau CSR (Opsional)

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

contoh Tinjau CSR dengan OpenSSL
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text

Langkah 4: Tanda tangani CSR dengan Otoritas Sertifikat

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

Untuk menandatangani CSR menggunakan AWS Private CA, pertama-tama dekode CSR yang dikodekan base64 dan simpan ke file, lalu gunakan API. IssueCertificate

contoh 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:

contoh 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

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:

contoh 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:

contoh 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 masuksigned-cert.pem. Anda harus meng-base64-encode sertifikat ini saat memberikannya ke API: ExportKey

contoh Base64 Mengkodekan Sertifikat yang Ditandatangani
$ cat signed-cert.pem | base64 -w 0

Langkah 5: Impor Sertifikat CA

Setiap CA yang digunakan harus dipercaya terlebih dahulu untuk mencegah sertifikat arbitrer digunakan. Impor sertifikat root CA eksternal Anda menggunakan ImportKeyAPI. Jika menggunakan CA perantara, panggil import-key lagi tetapi tentukan TrustedPublicKey alih-alih RootCertificatePublicKey dan tentukan root CA ARN.

contoh 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

Dalam contoh ini, kami mengimpor kembali ke Kriptografi AWS Pembayaran, jadi kami memanggil layanan untuk menerima sertifikat kunci publik KRD menggunakan API. GetParametersForImport Dalam skenario nyata, ini akan disediakan oleh sistem lain, seperti HSM, ATM, terminal pembayaran atau sistem manajemen terminal pembayaran.

contoh 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

Terakhir, ekspor kunci menggunakan TR-34 dengan sertifikat bertanda CA Anda sendiri menggunakan API. ExportKey Berikan sertifikat penandatanganan yang ditandatangani oleh CA eksternal Anda.

contoh 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

  • 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.