Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Traiga su propia autoridad de certificación (BYOCA)
De forma predeterminada, cuando se necesita un certificado de clave pública para las claves asimétricas (RSA, ECC) creadas en el servicio, estos certificados los emite una autoridad de certificación (CA) de criptografía de AWS pagos y única para cada cuenta. El objetivo es facilitar el uso del X.509 sin la carga de identificar o configurar una entidad de certificación o gestionar las solicitudes de firma de certificados (CSR).
AWS La criptografía de pagos también permite utilizar su propia CA cuando sea necesario por motivos normativos o de cumplimiento.
Descripción general de
La función BYOCA le permite utilizar su propia autoridad de certificación en cualquier lugar donde se utilicen certificados, como la importación o exportación del TR-34, el RSA Unwrap y las transferencias de claves basadas en el ECDH. Esto resulta útil cuando necesita mantener una cadena de certificados coherente en toda la organización o cuando trabaja con socios que requieren certificados de CA específicos. El siguiente ejemplo muestra el flujo de trabajo de BYOCA mediante la exportación de claves TR-34.
Las tres diferencias clave en comparación con el flujo de exportación estándar del TR-34 son:
-
La clave RSA de firma se crea explícitamente mediante. CreateKey Anteriormente, se creaba implícitamente mediante. GetParametersForExport
-
Una nueva API GetCertificateSigningRequestcrea una solicitud de firma de certificado (CSR) que puede firmar una entidad emisora de certificados externa.
-
La ExportKeyAPI se amplía para permitir que se proporcione un certificado en tiempo de ejecución. Anteriormente, esto lo proporcionaba implícitamente
import-token, que pasa a ser un campo opcional.
Consideraciones importantes
-
Estos ejemplos utilizan claves RSA-2048 y empaquetan una clave TDES-2KEY. Al exportar el AES-128, asegúrese de que todas las claves sean RSA-3072 o RSA-4096.
-
El error más común es que la clave representada por y no coincide.
SigningKeyIdentifierSigningKeyCertificate
Flujo de trabajo BYOCA
Los siguientes pasos muestran el flujo de trabajo completo de BYOCA para la exportación del TR-34.
Steps
Paso 1: Crear una clave RSA
Primero, cree un par de claves RSA que, en última instancia, será el certificado de firma de KDH. Puede añadir etiquetas para identificar el propósito de la clave.
ejemplo Cree una clave RSA para firmar
$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" } }
Tome nota de elloKeyArn, ya que lo necesitará en el siguiente paso.
Paso 2: generar una solicitud de firma de certificado
Genere una solicitud de firma de certificado (CSR) para que la firme su CA externa mediante la GetCertificateSigningRequestAPI. El resultado es un archivo PEM codificado en base64. Si decodifica el contenido en base64 y lo guarda, dispondrá de una CSR válida en formato PEM.
ejemplo Genera 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..." }
El CertificateSigningRequest campo contiene la CSR codificada en base64 que enviará a su CA para que la firme.
Paso 3: Revise la CSR (opcional)
Si lo desea, puede utilizar OpenSSL para revisar el contenido de la CSR y asegurarse de que es válido y se ajusta a lo esperado.
ejemplo Revise la CSR con OpenSSL
$echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
Paso 4: firme la CSR con una autoridad de certificación
Tras generar la CSR, es necesario que la firme una autoridad de certificación (CA). En los entornos de producción, normalmente Autoridad de certificación privada de AWS utilizaría la infraestructura de CA establecida por su organización. Para realizar pruebas, puede usar OpenSSL para crear un certificado autofirmado.
Utilizando Autoridad de certificación privada de AWS
Para firmar la CSR con ella Autoridad de certificación privada de AWS, primero decodifique la CSR codificada en base64 y guárdela en un archivo y, a continuación, utilice la API. IssueCertificate
ejemplo Firma la CSR con 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" }
A continuación, recupere el certificado firmado:
ejemplo Recupere el certificado firmado
$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-----" }
Guarde el contenido del certificado para usarlo en el paso de exportación. Deberás codificarlo en base64 cuando lo proporciones a la API. ExportKey
Uso de OpenSSL para realizar pruebas
Con fines de prueba, puede usar OpenSSL para crear una CA autofirmada y firmar la CSR. En primer lugar, cree una clave privada de CA y un certificado autofirmado:
ejemplo Cree una CA de prueba con 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"
A continuación, decodifique la CSR del paso anterior y fírmela con su CA de prueba:
ejemplo Firme CSR con 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
El certificado firmado ya está disponible. signed-cert.pem Deberás codificar este certificado en base64 cuando lo proporciones a la API: ExportKey
ejemplo Codifique en Base64 el certificado firmado
$cat signed-cert.pem | base64 -w 0
Paso 5: Importar el certificado de CA
Primero se debe confiar en cualquier CA que se utilice para evitar que se utilicen certificados arbitrarios. Importe el certificado raíz de su CA externa mediante la ImportKeyAPI. Si utiliza una CA intermedia, import-key vuelva a llamar, pero especifique TrustedPublicKey en lugar de RootCertificatePublicKey y especifique el ARN de la CA raíz.
ejemplo Importe el certificado de CA raíz
$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" } }
Tome nota de las CA KeyArn para utilizarlas en el paso de exportación.
Paso 6: Obtenga el certificado de cifrado KRD
En este ejemplo, volvemos a importar a AWS Payment Cryptography, por lo que llamamos al servicio para recibir un certificado de clave pública KRD mediante la API. GetParametersForImport En un escenario real, lo proporcionaría otro sistema, como un HSM, un cajero automático, una terminal de pago o un sistema de gestión de terminales de pago.
ejemplo Obtener parámetros para importación
$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" }
Paso 7: Exportar la clave con BYOCA
Por último, exporte la clave mediante el TR-34 con su propio certificado firmado por una autoridad certificadora mediante la API. ExportKey Proporcione el certificado de firma firmado por su CA externa.
ejemplo Exportación del TR-34 con 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" } }
El bloque de claves exportado ahora puede ser importado por el sistema receptor mediante el proceso de importación estándar del TR-34.
Notas adicionales
-
Estos ejemplos se muestran mediante la AWS CLI. La misma funcionalidad está disponible en todas las versiones de AWS, SDKs incluidos Java, Python, Go y Rust.
-
Si realiza las pruebas con una CA autofirmada, puede usar OpenSSL para crear una CA de prueba y firmar la CSR. En producción, utilice la infraestructura de CA establecida de su organización.