

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)
<a name="keyexchange-byoca"></a>

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 son emitidos por una autoridad certificadora (CA) especializada en criptografía de AWS pagos y única para cada cuenta. El objetivo es facilitar su uso X.509 sin la carga de identificar o configurar una CA o administrar las solicitudes de firma de certificados (CSR).

AWS La criptografía de pagos también ofrece la posibilidad de utilizar su propia CA cuando sea necesario por motivos relacionados con las políticas o el cumplimiento de normas.

**Topics**
+ [Descripción general de](#keyexchange-byoca.overview)
+ [Flujo de trabajo de exportación de BYOCA](#keyexchange-byoca.export-workflow)
+ [Flujo de trabajo de importación de BYOCA](#keyexchange-byoca.import-workflow)
+ [Notas adicionales](#keyexchange-byoca.notes)

## Descripción general de
<a name="keyexchange-byoca.overview"></a>

Con BYOCA, puede usar su propia CA para TR-34 import/export las transferencias de claves RSA Unwrap y ECDH. Use BYOCA cuando necesite una cadena de certificados uniforme en toda su organización o cuando los socios requieran certificados de CA específicos. Los siguientes ejemplos muestran el flujo de trabajo de BYOCA para la exportación e importación de TR-34 claves. TR-34 

Hay tres diferencias clave con respecto al flujo estándar TR-34 :

1. La clave RSA se crea con [ CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). Antes, `GetParametersForExport` o la `GetParametersForImport` creó para usted.

1. La [ GetCertificateSigningRequest ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API crea una CSR. A continuación, su CA externa puede firmarla.

1. [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)Las API [ ExportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) Y aceptan un certificado en el momento de la llamada. El token ahora es opcional.

**Consideraciones importantes**  
En estos ejemplos, se utilizan RSA-2048 claves y se envuelven una TDES-2KEY clave. Al exportar 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 `SigningKeyIdentifier` y `SigningKeyCertificate` no coincide.

## Flujo de trabajo de exportación de BYOCA
<a name="keyexchange-byoca.export-workflow"></a>

Los pasos siguientes muestran el flujo de trabajo completo de BYOCA para la exportación. TR-34 

**Topics**
+ [Paso 1: Crear la clave RSA](#keyexchange-byoca.create-rsa)
+ [Paso 2: Generar la solicitud de firma del certificado](#keyexchange-byoca.generate-csr)
+ [Paso 3: Revise la CSR (opcional)](#keyexchange-byoca.review-csr)
+ [Paso 4: Firme la CSR con una autoridad de certificación](#keyexchange-byoca.sign-csr)
+ [Paso 5: Importar el certificado de CA](#keyexchange-byoca.import-ca)
+ [Paso 6: Obtenga el certificado de cifrado KRD](#keyexchange-byoca.get-krd)
+ [Paso 7: Exportar la clave con BYOCA](#keyexchange-byoca.export-key)

### Paso 1: Crear la clave RSA
<a name="keyexchange-byoca.create-rsa"></a>

En primer lugar, cree un par de claves RSA que, en última instancia, será el certificado de firma de KDH. Puede agregar etiquetas para identificar el propósito de la clave.

**Example 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 ella`KeyArn`, ya que la necesitará en el siguiente paso.

### Paso 2: Generar la solicitud de firma del certificado
<a name="keyexchange-byoca.generate-csr"></a>

Genere una solicitud de firma de certificado (CSR) para que la firme su CA externa mediante la [ GetCertificateSigningRequest ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API. El resultado es un archivo PEM codificado en base64. Si decodifica el contenido en base64 y lo guarda, tendrá una CSR válida en formato PEM.

**Example 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 el archivo PEM completo, codificado en base64. El archivo PEM incluye los marcadores y. `-----BEGIN CERTIFICATE REQUEST-----` `-----END CERTIFICATE REQUEST-----` Envíe este valor a su CA para que lo firme.

### Paso 3: Revise la CSR (opcional)
<a name="keyexchange-byoca.review-csr"></a>

Si lo desea, puede usar OpenSSL para revisar el contenido de la CSR y asegurarse de que es válido y cumple con lo esperado.

**Example Revisa la CSR con OpenSSL**  

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

### Paso 4: Firme la CSR con una autoridad de certificación
<a name="keyexchange-byoca.sign-csr"></a>

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 de su organización. Con fines de prueba, puede usar OpenSSL para crear un certificado autofirmado.

#### Utilización Autoridad de certificación privada de AWS
<a name="keyexchange-byoca.sign-csr-pca"></a>

Para firmar la CSR con Autoridad de certificación privada de AWS, primero decodifique la CSR codificada en base64, guárdela en un archivo y, a continuación, utilice la API. [ IssueCertificate ](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html)

**Example 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, recupera el certificado firmado:

**Example Recuperar 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
<a name="keyexchange-byoca.sign-csr-openssl"></a>

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:

**Example 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, descodifique la CSR del paso anterior y fírmela con su CA de prueba:

**Example Firme la 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á aquí. `signed-cert.pem` Deberás codificar este certificado en base64 cuando lo proporciones a la API: `ExportKey`

**Example Codifica en Base64 el certificado firmado**  

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

### Paso 5: Importar el certificado de CA
<a name="keyexchange-byoca.import-ca"></a>

Es necesario confiar primero en cualquier CA que se utilice para evitar que se utilicen certificados arbitrarios. Importe el certificado raíz de su CA externa mediante la [ ImportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API. Si utiliza una CA intermedia, `import-key` vuelva a llamar, pero especifique `TrustedPublicKey` en lugar de `RootCertificatePublicKey` especificar el ARN de la CA raíz.

**Example 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 la etapa de exportación.

### Paso 6: Obtenga el certificado de cifrado KRD
<a name="keyexchange-byoca.get-krd"></a>

En este ejemplo, volvemos a realizar la importación a AWS Payment Cryptography, por lo que llamamos al servicio para recibir un certificado de clave pública de KRD mediante la API. [ GetParametersForImport ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) En un escenario real, lo proporcionaría otro sistema, como un HSM, un cajero automático, un terminal de pago o un sistema de gestión de terminales de pago.

**Example 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
<a name="keyexchange-byoca.export-key"></a>

Por último, exporte la clave TR-34 con su propio CA-signed certificado mediante la [ ExportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) API. Proporcione el certificado de firma firmado por su CA externa.

**Example TR-34 Exporte 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 sistema receptor ahora puede importar el bloque de claves exportado mediante el proceso de TR-34 importación estándar.

## Flujo de trabajo de importación de BYOCA
<a name="keyexchange-byoca.import-workflow"></a>

Los siguientes pasos le guiarán por el flujo de trabajo de BYOCA para la importación de claves. TR-34 Utilice este flujo de trabajo para recibir una clave de criptografía de AWS pagos con su propio certificado de cifrado CA-signed KRD (dispositivo receptor de claves). Con la importación de BYOCA, usted controla la cadena de confianza mediante una CA que ya administra.

**Topics**
+ [Paso 1: Crear la clave RSA](#keyexchange-byoca.import-create-rsa)
+ [Paso 2: Generar la solicitud de firma del certificado](#keyexchange-byoca.import-generate-csr)
+ [Paso 3: Revise la CSR (opcional)](#keyexchange-byoca.import-review-csr)
+ [Paso 4: Firme la CSR con una autoridad de certificación](#keyexchange-byoca.import-sign-csr)
+ [Paso 5: Importar el certificado de CA](#keyexchange-byoca.import-ca)
+ [Paso 6: Obtenga el certificado de firma de KDH del sistema de envío](#keyexchange-byoca.import-get-kdh)
+ [Paso 7: Importar la clave con BYOCA](#keyexchange-byoca.import-key)

### Paso 1: Crear la clave RSA
<a name="keyexchange-byoca.import-create-rsa"></a>

Cree un par de claves RSA para usarlo como clave de cifrado KRD. Esta clave desenvuelve y descifra la clave entrante durante la importación. TR-34 La clave no se puede exportar porque permanece en el servicio como clave receptora.

**Example Cree la clave de cifrado 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"
    }
}
```

Anote el valor `KeyArn`. Lo necesitará en el siguiente paso.

### Paso 2: Generar la solicitud de firma del certificado
<a name="keyexchange-byoca.import-generate-csr"></a>

Genere una solicitud de firma de certificado (CSR) para la clave de cifrado KRD mediante la [ GetCertificateSigningRequest ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API. El resultado es un archivo PEM codificado en base64. Si decodifica el contenido en base64 y lo guarda, tendrá una CSR válida en formato PEM.

**Example Genere CSR para 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..."
}
```

El `CertificateSigningRequest` campo contiene el archivo PEM completo, codificado en base64. El archivo PEM incluye los marcadores y. `-----BEGIN CERTIFICATE REQUEST-----` `-----END CERTIFICATE REQUEST-----` Envíe este valor a su CA para que lo firme.

### Paso 3: Revise la CSR (opcional)
<a name="keyexchange-byoca.import-review-csr"></a>

Si lo desea, puede usar OpenSSL para revisar el contenido de la CSR y asegurarse de que es válido y cumple con lo esperado.

**Example Revisa la CSR con OpenSSL**  

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

### Paso 4: Firme la CSR con una autoridad de certificación
<a name="keyexchange-byoca.import-sign-csr"></a>

Después de generar la CSR, pídale a una autoridad de certificación (CA) que la firme. En los entornos de producción, normalmente Autoridad de certificación privada de AWS utilizaría la infraestructura de CA establecida de su organización. Con fines de prueba, puede usar OpenSSL para crear un certificado autofirmado.

#### Utilización Autoridad de certificación privada de AWS
<a name="keyexchange-byoca.import-sign-csr-pca"></a>

Para firmar la CSR Autoridad de certificación privada de AWS, primero decodifique la CSR codificada en base64, guárdela en un archivo y, a continuación, utilice la API. [ IssueCertificate ](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html)

**Example Firma la CSR con 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"
}
```

A continuación, recupera el certificado firmado:

**Example Recuperar 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/fedcba0987654321
```

```
{
    "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 importación. Base64-encode el certificado antes de proporcionarlo a la `ImportKey` API.

#### Uso de OpenSSL para realizar pruebas
<a name="keyexchange-byoca.import-sign-csr-openssl"></a>

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:

**Example 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, descodifique la CSR del paso anterior y fírmela con su CA de prueba:

**Example Firme la CSR con 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
```

El certificado firmado ya está aquí. `krd-signed-cert.pem` Base64-encode este certificado antes de proporcionarlo a la `ImportKey` API:

**Example Codifica en Base64 el certificado firmado**  

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

### Paso 5: Importar el certificado de CA
<a name="keyexchange-byoca.import-ca"></a>

Antes de usar una CA, primero debe confiar en ella. Importe el certificado raíz de su CA externa mediante la [ ImportKey ](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API. Si utiliza una CA intermedia, `import-key` vuelva a llamar, pero especifique `TrustedPublicKey` en lugar de `RootCertificatePublicKey` especificar el ARN de la CA raíz.

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

Tenga en cuenta las CA que `KeyArn` se utilizarán en el paso de importación.

### Paso 6: Obtenga el certificado de firma de KDH del sistema de envío
<a name="keyexchange-byoca.import-get-kdh"></a>

En un intercambio de TR-34 claves, la parte remitente (el host de distribución de claves o KDH) proporciona su certificado de clave pública para la firma. Este certificado se usa para verificar la firma en el bloque de claves empaquetado durante la importación y garantizar que el material clave provenga de un remitente de confianza. En producción, este certificado normalmente proviene del sistema de envío (como un HSM, una terminal de pago o un sistema de administración de claves) a través de su propio proceso de distribución de certificados.

En este ejemplo, utilizas la criptografía de AWS pagos como remitente y destinatario para que los pasos sean breves. Llame [ GetParametersForExport ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html) para obtener el certificado de firma de KDH que normalmente proporcionaría el sistema de envío.

**Example Obtenga los parámetros para la exportación**  

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

Tenga en cuenta la `SigningKeyCertificate` letra `ExportToken` y para usarla en el paso de importación.

### Paso 7: Importar la clave con BYOCA
<a name="keyexchange-byoca.import-key"></a>

Por último, importe la clave TR-34 con su propio CA-signed certificado mediante la `ImportKey` API. Proporcione el certificado de cifrado KRD firmado por su CA externa.

El `RandomNonce` parámetro es obligatorio cuando se utiliza el método de 2 TR-34 pasos. El servicio no genera un nonce, sino un valor hexadecimal aleatorio que tú generas y debe ser el mismo tanto en el lado emisor como en el receptor. Cuando utilices el método 1-pass TR-34 (que se basa en una marca de tiempo en lugar de en una marca temporal), la marca de tiempo no debe estar en el futuro. El servicio no valida ninguna frescura en particular (por ejemplo, dentro de un número determinado de horas), pero puedes hacer que compruebes la frescura por tu cuenta si es necesario.

**Example TR-34 Importe con 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"
    }
}
```

La clave ya está importada a AWS Payment Cryptography y está lista para usarse. El `KeyOrigin` campo `EXTERNAL` indica que la clave proviene de fuera del servicio.

## Notas adicionales
<a name="keyexchange-byoca.notes"></a>
+ Estos ejemplos se muestran con la CLI de AWS. La misma funcionalidad está disponible en todos los SDK de AWS, incluidos Java, Python, Go y Rust.
+ Si está realizando 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.