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
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 Payment Cryptography bietet auch die Möglichkeit, Ihre eigene CA zu verwenden, wenn dies aus Richtlinien- oder Compliance-Gründen erforderlich ist.
-Übersicht
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:
-
Der RSA-Signaturschlüssel wird explizit mit erstellt. CreateKey Zuvor wurde er implizit über erstellt. GetParametersForExport
-
Eine neue API GetCertificateSigningRequesterstellt eine Certificate Signing Request (CSR), die von Ihrer externen CA signiert werden kann.
-
Die ExportKeyAPI 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.
SigningKeyIdentifierSigningKeyCertificate
VON OCA Workflow
Die folgenden Schritte demonstrieren den vollständigen BYOCA-Workflow für den TR-34-Export.
Schritte
Schritt 1: RSA-Schlüssel erstellen
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.
Beispiel 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
Generieren Sie mithilfe der GetCertificateSigningRequestAPI 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.
Beispiel 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)
Sie können optional OpenSSL verwenden, um den CSR-Inhalt zu überprüfen und sicherzustellen, dass er gültig und erwartungsgemäß ist.
Beispiel CSR mit OpenSSL überprüfen
$echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
Schritt 4: Signieren Sie die CSR bei einer Zertifizierungsstelle
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
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
Beispiel 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:
Beispiel 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
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:
Beispiel 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:
Beispiel 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
Beispiel Das signierte Zertifikat mit Base64 kodieren
$cat signed-cert.pem | base64 -w 0
Schritt 5: CA-Zertifikat importieren
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 ImportKeyAPI. 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.
Beispiel 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
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 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.
Beispiel 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
Exportieren Sie abschließend den Schlüssel mithilfe von TR-34 mit Ihrem eigenen CA-signierten Zertifikat mithilfe der API. ExportKey Geben Sie das Signaturzertifikat an, das von Ihrer externen Zertifizierungsstelle signiert wurde.
Beispiel 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
-
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.