

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bringen Sie Ihre eigene Zertifizierungsstelle (BYOCA) mit
<a name="keyexchange-byoca"></a>

Wenn ein Public-Key-Zertifikat für asymmetrische (RSA, ECC) Schlüssel benötigt wird, die innerhalb des Dienstes erstellt wurden, werden diese Zertifikate standardmäßig von einer AWS Payment Cryptography and Account Unique Certificate Authority (CA) ausgestellt. Dadurch soll die Verwendung von X.509 vereinfacht werden, ohne dass eine Zertifizierungsstelle identifiziert oder eingerichtet oder Certificate Signing Requests (CSR) verwaltet werden müssen.

AWS Zahlungskryptografie bietet auch die Möglichkeit, Ihre eigene CA zu verwenden, wenn dies aus Richtlinien- oder Compliance-Gründen erforderlich ist.

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

Mit der BYOCA-Funktion können Sie überall, wo Zertifikate verwendet werden, Ihre eigene Zertifizierungsstelle verwenden, einschließlich TR-34-Import/Export, RSA Unwrap und ECDH-basierte Schlüsselübertragungen. Dies ist nützlich, wenn Sie eine konsistente Zertifikatskette in Ihrem Unternehmen aufrechterhalten müssen oder wenn Sie mit Partnern zusammenarbeiten, die bestimmte CA-Zertifikate benötigen. Das folgende Beispiel zeigt den BYOCA-Workflow mithilfe des TR-34-Schlüsselexports.

Die drei wichtigsten Unterschiede zum standardmäßigen TR-34-Exportablauf sind:

1. Der RSA-Signaturschlüssel wird explizit mit erstellt. [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) Zuvor wurde er implizit über erstellt. [GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html)

1. Eine neue API [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)erstellt eine Certificate Signing Request (CSR), die von Ihrer externen CA signiert werden kann.

1. Die [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html)API wurde erweitert, sodass zur Laufzeit ein Zertifikat bereitgestellt werden kann. Bisher wurde dies implizit von bereitgestellt`import-token`, was zu einem optionalen Feld wird.

**Wichtige Überlegungen**  
Diese Beispiele verwenden RSA-2048-Schlüssel und umschließen einen TDES-2KEY-Schlüssel. Achten Sie beim Exportieren von AES-128 darauf, dass es sich bei allen Schlüsseln um RSA-3072 oder RSA-4096 handelt.
Der häufigste Fehler ist, dass der Schlüssel, der durch und dargestellt wird, nicht übereinstimmt. `SigningKeyIdentifier` `SigningKeyCertificate`

## VON OCA Workflow
<a name="keyexchange-byoca.workflow"></a>

Die folgenden Schritte demonstrieren den vollständigen BYOCA-Workflow für den TR-34-Export.

**Topics**
+ [

### Schritt 1: RSA-Schlüssel erstellen
](#keyexchange-byoca.create-rsa)
+ [

### Schritt 2: Generieren Sie eine Anfrage zum Signieren eines Zertifikats
](#keyexchange-byoca.generate-csr)
+ [

### Schritt 3: CSR überprüfen (optional)
](#keyexchange-byoca.review-csr)
+ [

### Schritt 4: Signieren Sie die CSR bei einer Zertifizierungsstelle
](#keyexchange-byoca.sign-csr)
+ [

### Schritt 5: CA-Zertifikat importieren
](#keyexchange-byoca.import-ca)
+ [

### Schritt 6: Holen Sie sich das KRD-Verschlüsselungszertifikat
](#keyexchange-byoca.get-krd)
+ [

### Schritt 7: Schlüssel mit BYOCA exportieren
](#keyexchange-byoca.export-key)

### Schritt 1: RSA-Schlüssel erstellen
<a name="keyexchange-byoca.create-rsa"></a>

Erstellen Sie zunächst ein RSA-Schlüsselpaar, das letztendlich das KDH-Signaturzertifikat sein wird. Sie können Tags hinzufügen, um den Zweck des Schlüssels zu identifizieren.

**Example RSA-Schlüssel zum Signieren erstellen**  

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

Notieren Sie sich das, `KeyArn` da Sie es im nächsten Schritt benötigen werden.

### Schritt 2: Generieren Sie eine Anfrage zum Signieren eines Zertifikats
<a name="keyexchange-byoca.generate-csr"></a>

Generieren Sie mithilfe der [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)API eine Certificate Signing Request (CSR), die von Ihrer externen Zertifizierungsstelle signiert werden soll. Die Ausgabe ist eine Base64-codierte PEM-Datei. Wenn Sie den Inhalt base64-dekodieren und speichern, haben Sie eine gültige CSR im PEM-Format.

**Example CSR generieren**  

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

Das `CertificateSigningRequest` Feld enthält die Base64-kodierte CSR, die Sie zur Unterzeichnung an Ihre Zertifizierungsstelle senden.

### Schritt 3: CSR überprüfen (optional)
<a name="keyexchange-byoca.review-csr"></a>

Sie können optional OpenSSL verwenden, um den CSR-Inhalt zu überprüfen und sicherzustellen, dass er gültig und erwartungsgemäß ist.

**Example CSR mit OpenSSL überprüfen**  

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

### Schritt 4: Signieren Sie die CSR bei einer Zertifizierungsstelle
<a name="keyexchange-byoca.sign-csr"></a>

Nachdem Sie die CSR generiert haben, müssen Sie sie von einer Zertifizierungsstelle (CA) signieren lassen. In Produktionsumgebungen würden Sie in der Regel die etablierte CA-Infrastruktur Ihres Unternehmens verwenden AWS Private CA . Zu Testzwecken können Sie OpenSSL verwenden, um ein selbstsigniertes Zertifikat zu erstellen.

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

Um die CSR mit zu signieren AWS Private CA, dekodieren Sie zuerst die Base64-kodierte CSR und speichern Sie sie in einer Datei. Verwenden Sie dann die API. [IssueCertificate](https://docs.aws.amazon.com/acm-pca/latest/APIReference/API_IssueCertificate.html)

**Example Signieren Sie CSR mit 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"
}
```

Rufen Sie dann das signierte Zertifikat ab:

**Example Signiertes Zertifikat abrufen**  

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

Speichern Sie den Inhalt des Zertifikats zur Verwendung im Exportschritt. Sie müssen es Base64-kodieren, wenn Sie es der API zur Verfügung stellen. `ExportKey`

#### OpenSSL zum Testen verwenden
<a name="keyexchange-byoca.sign-csr-openssl"></a>

Zu Testzwecken können Sie OpenSSL verwenden, um eine selbstsignierte CA zu erstellen und die CSR zu signieren. Erstellen Sie zunächst einen privaten CA-Schlüssel und ein selbstsigniertes Zertifikat:

**Example Test-CA mit OpenSSL erstellen**  

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

Dekodieren Sie dann die CSR aus dem vorherigen Schritt und signieren Sie sie mit Ihrer Testzertifizierungsstelle:

**Example CSR mit OpenSSL signieren**  

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

Das signierte Zertifikat ist jetzt da. `signed-cert.pem` Sie müssen dieses Zertifikat base64-kodieren, wenn Sie es der API zur Verfügung stellen: `ExportKey`

**Example Das signierte Zertifikat mit Base64 kodieren**  

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

### Schritt 5: CA-Zertifikat importieren
<a name="keyexchange-byoca.import-ca"></a>

Jeder verwendeten Zertifizierungsstelle muss zunächst vertraut werden, um zu verhindern, dass willkürliche Zertifikate verwendet werden. Importieren Sie das Stammzertifikat Ihrer externen CA mithilfe der [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)API. Wenn Sie eine Zwischenzertifizierungsstelle verwenden, rufen Sie `import-key` erneut auf, geben Sie jedoch `TrustedPublicKey` stattdessen den Root-CA-ARN an `RootCertificatePublicKey` und geben Sie ihn an.

**Example Root-CA-Zertifikat importieren**  

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

Notieren Sie sich die Zertifizierungsstellen, die im Exportschritt verwendet werden sollen. `KeyArn`

### Schritt 6: Holen Sie sich das KRD-Verschlüsselungszertifikat
<a name="keyexchange-byoca.get-krd"></a>

In diesem Beispiel importieren wir zurück in AWS Payment Cryptography, also rufen wir den Dienst auf, um über die API ein KRD-Zertifikat mit öffentlichem Schlüssel zu erhalten. [GetParametersForImport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) In einem realen Szenario würde dies durch das andere System bereitgestellt werden, z. B. ein HSM, ein Geldautomat, ein Zahlungsterminal oder ein Zahlungsterminal-Managementsystem.

**Example Parameter für den Import abrufen**  

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

### Schritt 7: Schlüssel mit BYOCA exportieren
<a name="keyexchange-byoca.export-key"></a>

Exportieren Sie abschließend den Schlüssel mithilfe von TR-34 mit Ihrem eigenen CA-signierten Zertifikat mithilfe der API. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) Geben Sie das Signaturzertifikat an, das von Ihrer externen Zertifizierungsstelle signiert wurde.

**Example TR-34 Export mit 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"
    }
}
```

Der exportierte Schlüsselblock kann jetzt vom Empfangssystem mithilfe des standardmäßigen TR-34-Importprozesses importiert werden.

## Weitere Hinweise
<a name="keyexchange-byoca.notes"></a>
+ Diese Beispiele werden mit der AWS-CLI gezeigt. Dieselbe Funktionalität ist in allen AWS verfügbar, SDKs einschließlich Java, Python, Go und Rust.
+ Wenn Sie mit einer selbstsignierten CA testen, können Sie OpenSSL verwenden, um eine Test-CA zu erstellen und die CSR zu signieren. Verwenden Sie in der Produktion die etablierte CA-Infrastruktur Ihres Unternehmens.