本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
导入密钥
重要
示例需要最新版本的 AWS CLI V2。在开始之前,请确保您已升级到最新版本。
目录
导入密钥简介
注意
使用 TR-31 或 TR-34 密钥块导入密钥时 X9.143,Paym AWS ent Cryptography 通常会保留(但不使用)任何可选标头。HM(HMAC 哈希类型)标头用于加密操作。KP 标头(包装密钥的 KCV)特定于导入过程,不保留。
与交易对手交换密钥时,通常首先交换密钥交换密钥(KEK)。然后,该密钥将用于保护后续密钥。使用电子格式,可以使用非对称技术(例如 TR-34 ECDH或RSA包装)来交换KEK。后续密钥将使用对称密钥交换进行交换, TR-31例如。该KEK将持续很长时间,并且只能根据政策及其定义的加密期限每隔几年更新一次。
如果只交换一两个密钥,您也可以选择使用非对称技术直接交换该密钥,例如 BDK。 AWS 支付密码学支持两种密钥交换方法。
导入对称密钥
使用非对称技术导入密钥 () TR-34
TR-34 使用 RSA 非对称加密技术对称密钥进行加密和签名以进行交换。这样可以确保封装密钥的机密性(加密)和完整性(签名)。
要导入自己的密钥,请查看上的 AWS GitHub
-
调用 “初始化导入” 命令
调用
get-parameters-for-import以初始化导入过程。此 API 为密钥导入生成密钥对,对密钥进行签名,并返回证书和证书根目录。使用此密钥加密要导出的密钥。 TR-34用术语来说,这被称为 KRD 证书。这些证书采用 base64 编码,有效期短,仅用于此目的。保存该ImportToken值。$aws payment-cryptography get-parameters-for-import \--key-material-typeTR34_KEY_BLOCK \--wrapping-key-algorithmRSA_2048{ "ImportToken": "import-token-bwxli6ocftypneu5", "ParametersValidUntilTimestamp": 1698245002.065, "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....", "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....", "WrappingKeyAlgorithm": "RSA_2048" } -
在密钥源系统上安装公共证书
对于大多数 HSM,您需要安装、加载或信任步骤 1 中生成的公共证书才能使用它导出密钥。这可能包括整个证书链,也可以仅包括步骤 1 中的根证书,具体取决于 HSM。
-
在源系统上生成密钥对并提供证书链给 AWS Payment Cryptography
为确保传输的有效载荷的完整性,发送方(密钥分发主机或 KDH)对其进行签名。为此目的生成公钥并创建公钥证书 (X509) 以提供给 AWS 支付加密。
从 HSM 传输密钥时,在该 HSM 上创建密钥对。HSM、第三方或诸如之类的服务 AWS 私有 CA 可以生成证书。
使用带有 o KeyMaterialType f
RootCertificatePublicKey和 of 的importKey命令将根证书加载到 AWS 支付加密中 KeyUsageType 。TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE对于中间证书,使用带有 o KeyMaterialType f
TrustedCertificatePublicKey和 of KeyUsageType 的importKey命令TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE。对多个中间证书重复此过程。使用链KeyArn中最后导入的证书作为后续导入命令的输入。注意
不要导入叶子证书。在导入命令期间直接提供。
-
从源系统导出密钥
许多 HSM 和相关系统都支持使用该 TR-34 规范导出密钥。将步骤 1 中的公钥指定为 KRD(加密)证书,将步骤 3 中的密钥指定为 KDH(签名)证书。要导入到 AWS 支付加密系统,请将该格式指定为 TR-34.2012 非 CMS 两阶段格式,也可称为 TR-34 Diebold 格式。
-
调用导入密钥
使用 o KeyMaterialType f
TR34_KEY_BLOCK调用 ImportKey API。使用步骤 3 中导入的最后一个 CA 的 KeyArncertificate-authority-public-key-identifier、步骤 4 中的封装密钥材料以及步骤 3 中的叶子证书。key-materialsigning-key-certificate包括步骤 1 中的导入令牌。$aws payment-cryptography import-key \--key-material='{"Tr34KeyBlock": { \ "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \ "ImportToken": "import-token-bwxli6ocftypneu5", \ "KeyBlockFormat": "X9_TR34_2012", \ "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", \ "WrappedKeyBlock": "308205A106092A864886F70D010702A08205923082058E020101310D300B0609608648016503040201308203..."} \ }'{ "Key": { "CreateTimestamp": "2023-06-13T16:52:52.859000-04:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", "KeyAttributes": { "KeyAlgorithm": "TDES_3KEY", "KeyClass": "SYMMETRIC_KEY", "KeyModesOfUse": { "Decrypt": true, "DeriveKey": false, "Encrypt": true, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": true, "Verify": false, "Wrap": true }, "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY" }, "KeyCheckValue": "CB94A2", "KeyCheckValueAlgorithm": "ANSI_X9_24", "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-06-13T16:52:52.859000-04:00" } } -
使用导入的密钥进行加密操作或后续导入
如果导入 KeyUsage 的是 TR31_K0_KEY_ENCRYPTION_KEY,则可以使用此密钥进行后续密钥导入。 TR-31对于其他密钥类型(例如 TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY),您可以直接使用该密钥进行加密操作。
使用非对称技术 (ECDH) 导入密钥
椭圆曲线 Diffie-Hellman (ECDH) 使用 ECC 非对称加密技术在双方之间建立共享密钥,无需预先交换密钥。ECDH 密钥是短暂的,因此 AWS 支付密码学不存储它们。在此过程中,使用ECDH进行一次性KBPK/KEK计算。该派生密钥将立即用于包装您要传输的实际密钥,该密钥可能是另一个 KBPK、IPEK 密钥或其他密钥类型。
导入时,发送系统通常称为第 U 方(发起方), AWS 支付加密称为第 V 方(响应方)。
注意
虽然 ECDH 可用于交换任何对称密钥类型,但它是唯一可以安全传输 AES-256 密钥的方法。
-
生成 ECC 密钥对
致电
create-key为该过程创建 ECC 密钥对。此 API 为密钥导入或导出生成密钥对。在创建时,指定使用此 ECC 密钥可以派生哪种密钥。使用 ECDH 交换(包装)其他密钥时,使用值。TR31_K1_KEY_BLOCK_PROTECTION_KEY注意
尽管低级 ECDH 会生成可用于任何目的的派生密钥,但 AWS 支付密码学允许密钥仅用于单一派生密钥类型,从而限制了密钥意外重复用于多种用途。
$aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}' --derive-key-usage "TR31_K1_KEY_BLOCK_PROTECTION_KEY"{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv", "KeyAttributes": { "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT", "KeyClass": "ASYMMETRIC_KEY_PAIR", "KeyAlgorithm": "ECC_NIST_P256", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": true, "NoRestrictions": false } }, "KeyCheckValue": "2432827F", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2025-03-28T22:03:41.087000-07:00", "UsageStartTimestamp": "2025-03-28T22:03:41.068000-07:00" } } -
获取公钥证书
get-public-key-certificate致电接收公钥作为 X.509 证书,该证书由您的账户 CA 签署,该证书专用于特定地区的 AWS 支付加密。例
$aws payment-cryptography get-public-key-certificate \--key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." } -
在交易对手系统上安装公共证书(U 方)
对于许多 HSM,您需要安装、加载或信任步骤 1 中生成的公共证书才能使用它导出密钥。这可能包括整个证书链,也可以仅包括步骤 1 中的根证书,具体取决于 HSM。有关更多信息,请查阅您的 HSM 文档。
-
在源系统上生成 ECC 密钥对并提供证书链给 AWS Payment Cryptography
在 ECDH 中,各方生成一对密钥并商定一个通用密钥。为了使 AWS 支付密码学得出密钥,它需要交易对手的公钥格式的公钥。 X.509
从 HSM 传输密钥时,在该 HSM 上创建密钥对。对于支持密钥块的 HSM,密钥标头将类似于
D0144K3EX00E0000。创建证书时,通常在 HSM 上生成 CSR,然后 HSM、第三方或服务等 AWS 私有 CA 可以生成证书。使用带有 o KeyMaterialType f
RootCertificatePublicKey和 of 的importKey命令将根证书加载到 AWS 支付加密中 KeyUsageType 。TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE对于中间证书,使用带有 o KeyMaterialType f
TrustedCertificatePublicKey和 of KeyUsageType 的importKey命令TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE。对多个中间证书重复此过程。使用链KeyArn中最后导入的证书作为后续导入命令的输入。注意
不要导入叶子证书。在导入命令期间直接提供。
-
在 Party U HSM 上使用 ECDH 派生一次性密钥
许多 HSM 和相关系统支持使用 ECDH 建立密钥。将步骤 1 中的公钥指定为公钥,将步骤 3 中的密钥指定为私钥。有关允许的选项,例如派生方法,请参阅 API 指南。
注意
诸如哈希类型之类的派生参数必须在两端完全匹配。否则,您将生成不同的密钥。
-
从源系统导出密钥
最后,使用标准 TR-31 命令将要传输的密钥导出到 AWS 支付加密系统。将 ECDH 派生密钥指定为 KBPK。要导出的密钥可以是任何 TDES 或 AES 密钥,只要包装密钥的强度至少与要导出的密钥一样强大。 TR-31
-
调用导入密钥
import-key使用 o KeyMaterialType f 调用 APIDiffieHellmanTr31KeyBlock。使用步骤 3 中导入的最后一个 CA 的 KeyArncertificate-authority-public-key-identifier、步骤 4 中的封装密钥材料以及步骤 3 中的叶子证书。key-materialpublic-key-certificate包括步骤 1 中的私钥 ARN。$aws payment-cryptography import-key \--key-material='{ "DiffieHellmanTr31KeyBlock": { "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5", "DerivationData": { "SharedInformation": "1234567890" }, "DeriveKeyAlgorithm": "AES_256", "KeyDerivationFunction": "NIST_SP800", "KeyDerivationHashAlgorithm": "SHA_256", "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv", "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN....", "WrappedKeyBlock": "D0112K1TB00E0000D603CCA8ACB71517906600FF8F0F195A38776A7190A0EF0024F088A5342DB98E2735084A7841CB00E16D373A70857E9A" } }'{ "Key": { "CreateTimestamp": "2025-03-13T16:52:52.859000-04:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", "KeyAttributes": { "KeyAlgorithm": "TDES_3KEY", "KeyClass": "SYMMETRIC_KEY", "KeyModesOfUse": { "Decrypt": true, "DeriveKey": false, "Encrypt": true, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": true, "Verify": false, "Wrap": true }, "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY" }, "KeyCheckValue": "CB94A2", "KeyCheckValueAlgorithm": "ANSI_X9_24", "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2025-03-13T16:52:52.859000-04:00" } } -
使用导入的密钥进行加密操作或后续导入
如果导入 KeyUsage 的是 TR31_K0_KEY_ENCRYPTION_KEY,则可以使用此密钥进行后续密钥导入。 TR-31对于其他密钥类型(例如 TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY),您可以直接使用该密钥进行加密操作。
使用非对称技术导入密钥 (RSA Unwrap)
概述: AWS 支付密码学在 TR-34 不可行的情况下支持 RSA wrap/unwrap 进行密钥交换。例如 TR-34,该技术使用RSA非对称加密来加密对称密钥以进行交换。但是,与之不同的是 TR-34,这种方法不要求发送方对有效载荷进行签名。此外,这种 RSA 封装技术无法在传输过程中保持密钥元数据的完整性,因为它不包括密钥块。
注意
您可以使用 RSA 封装来导入或导出 TDES 和 AES-128 密钥。
-
调用 “初始化导入” 命令
调用get-parameters-for-import以使用 o
KeyMaterialTypef 初始化导入过程KEY_CRYPTOGRAM。RSA_2048用于交换 TDES 密钥WrappingKeyAlgorithm时使用。RSA_4096在交换 TDESRSA_3072或 AES-128 密钥时使用或。此 API 为密钥导入生成密钥对,使用证书根对密钥进行签名,并返回证书和证书根。使用此密钥加密要导出的密钥。这些证书的有效期很短,仅用于此目的。$aws payment-cryptography get-parameters-for-import \--key-material-typeKEY_CRYPTOGRAM \--wrapping-key-algorithmRSA_4096{ "ImportToken": "import-token-bwxli6ocftypneu5", "ParametersValidUntilTimestamp": 1698245002.065, "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....", "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....", "WrappingKeyAlgorithm": "RSA_4096" } -
在密钥源系统上安装公共证书
对于许多 HSM,您需要安装、加载或信任步骤 1 中生成的公共证书(and/or其根)才能使用它导出密钥。
-
从源系统导出密钥
许多 HSM 和相关系统都支持使用 RSA 封装导出密钥。将步骤 1 中的公钥指定为加密证书 (
WrappingKeyCertificate)。如果您需要信任链,请使用步骤 1 中的。WrappingKeyCertificateChain从 HSM 导出密钥时,将格式指定为 RSA,填充模式 = PKCS #1 v2.2 OAEP(使用 SHA 256 或 SHA 512)。 -
Call 导入密钥
import-key使用 o
KeyMaterialTypef 调用 APIKeyMaterial。您需要步骤 1ImportToken中的内容和步骤 3 中的key-material(封装密钥材料)。提供密钥参数(例如密钥用法),因为 RSA 封装不使用密钥块。$cat import-key-cryptogram.json{ "KeyMaterial": { "KeyCryptogram": { "Exportable": true, "ImportToken": "import-token-bwxli6ocftypneu5", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyClass": "SYMMETRIC_KEY", "KeyModesOfUse": { "Decrypt": true, "DeriveKey": false, "Encrypt": true, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": true, "Verify": false, "Wrap": true }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY" }, "WrappedKeyCryptogram": "18874746731....", "WrappingSpec": "RSA_OAEP_SHA_256" } } }$aws payment-cryptography import-key--cli-input-jsonfile://import-key-cryptogram.json{ "Key": { "KeyOrigin": "EXTERNAL", "Exportable": true, "KeyCheckValue": "DA1ACF", "UsageStartTimestamp": 1697643478.92, "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "CreateTimestamp": 1697643478.92, "KeyState": "CREATE_COMPLETE", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Unwrap": true, "Verify": false, "DeriveKey": false, "Decrypt": true, "NoRestrictions": false, "Sign": false, "Wrap": true, "Generate": false }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY" }, "KeyCheckValueAlgorithm": "CMAC" } } -
使用导入的密钥进行加密操作或后续导入
如果导入
KeyUsage的是TR31_K0_KEY_ENCRYPTION_KEY或TR31_K1_KEY_BLOCK_PROTECTION_KEY,则可以使用此密钥进行后续密钥导入 TR-31。如果密钥类型是任何其他类型(例如TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY),则可以直接使用该密钥进行加密操作。
使用预先建立的密钥交换密钥导入对称密钥 () TR-31
交换多个密钥或支持密钥轮换时,合作伙伴通常首先交换初始密钥加密密钥 (KEK)。您可以使用TR-34或物理密钥交换等技术将 KEK 与 AWS 支付加密技术交换。
建立 KEK 后,您可以使用它来传输后续密钥(包括其他 KEK)。 AWS 支付加密支持使用 ANSI 进行这种密钥交换 TR-31,HSM 供应商广泛使用和支持 ANSI。
-
导入密钥加密密钥 (KEK)
确保你已经导入了 KEK 并有 KeyArn(或 KeyAlias)可用。
-
在源平台上创建密钥
如果密钥不存在,请在源平台上创建。或者,您可以在 AWS 支付密码学上创建密钥并使用该export命令。
-
从源平台导出密钥
导出时,将导出格式指定为 TR-31。源平台将要求导出密钥和要使用的密钥加密密钥。
-
导入到 AWS Payment Cryptography
调用import-key命令时,使用您的密钥加密密钥的 KeyARN(或别名)。
WrappingKeyIdentifier使用源平台的输出WrappedKeyBlock。例
$aws payment-cryptography import-key \--key-material='{"Tr31KeyBlock": { \ "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \ "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \ }'{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "KeyAttributes": { "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Decrypt": true, "Wrap": true, "Unwrap": true, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "0A3674", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "EXTERNAL", "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00", "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00" } }
导入非对称(RSA、ECC)公钥
所有导入的证书必须至少与链中颁发的(前身)证书一样强大。这意味着,RSA_2048 CA 只能用于保护 RSA_2048 分支证书,ECC 证书必须受另一份同等强度的 ECC 证书保护。ECC P384 证书只能由 P384 或 P521 CA 颁发。所有证书在导入时必须未过期。
导入 RSA 公钥
AWS 支付加密支持将公共 RSA 密钥作为 X.509 证书导入。要导入证书,请先导入其根证书。所有证书在导入时必须未过期。证书应采用 PEM 格式并采用 base64 编码。
-
将根证书导入 AWS Payment Cryptography
使用以下命令导入根证书:
例
$aws payment-cryptography import-key \--key-material='{"RootCertificatePublicKey": { \ "KeyAttributes": { \ "KeyAlgorithm": "RSA_2048", \ "KeyClass": "PUBLIC_KEY", \ "KeyModesOfUse": { \ "Verify": true}, \ "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKVENDQWcyZ0F3SUJBZ0lCWkRBTkJna3Foa2lHOXcwQkFR..."} \ }'{ "Key": { "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", "KeyAttributes": { "KeyAlgorithm": "RSA_2048", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:52:01.023000+00:00" } } -
将公钥证书导入 AWS Payment Cryptography
现在,您可以导入公钥。由于 TR-34 和 ECDH 依赖于在运行时传递分支证书,因此此选项仅在使用来自其他系统的公钥加密数据时使用。 KeyUsage 将设置为 TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION。
例
$aws payment-cryptography import-key \--key-material='{"Tr31KeyBlock": { \ "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \ "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \ }'{ "Key": { "CreateTimestamp": "2023-08-08T18:55:46.815000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", "KeyAttributes": { "KeyAlgorithm": "RSA_4096", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:55:46.815000+00:00" } }
导入 ECC 公钥
AWS 支付加密支持将公共 ECC 密钥作为 X.509 证书导入。要导入证书,请先导入其根 CA 证书和任何中间证书。所有证书在导入时必须未过期。证书应采用 PEM 格式并采用 base64 编码。
-
将 ECC 根证书导入 AWS Payment Cryptography
使用以下命令导入根证书:
例
$aws payment-cryptography import-key \--key-material='{"RootCertificatePublicKey": { \ "KeyAttributes": { \ "KeyAlgorithm": "ECC_NIST_P521", \ "KeyClass": "PUBLIC_KEY", \ "KeyModesOfUse": { \ "Verify": true}, \ "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQekNDQWFDZ0F3SUJBZ0lDSjNVd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnBaMjVsWkVObGNuUnBabWxqCllYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUEKRDVEUXc5RW1Tb1lJVkRnbUpmRm1wL1pzMXp1M0ZobThrdUdkYlA4NWgwNTdydkhHZ3VISW03V3N1aTlpdXNvNApFWEZnV3ZUdy85amhZcVJrMi9yY1RHb0JrS2NpV3Q2UHMxVmpSUVZhVEZmbmxPdjRNTURQUEFEUWthVU45cVNNCkF5MTF0RklKNlFGWDR0aGx3RzBaZkFwd0NMV1ZyMzFrRU45RDJhVUh6Mjg5WlM2all6QmhNQjhHQTFVZEl3UVkKTUJhQUZFMjhnay9QZnZ3NklsNm9yQzNwRmJtK280emxNQjBHQTFVZERnUVdCQlJOdklKUHozNzhPaUplcUt3dAo2Ulc1dnFPTTVUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lDeERBS0JnZ3Foa2pPClBRUURCQU9CakFBd2dZZ0NRZ0ZRRit5VUVSYTZoQ0RwSDVHeVhlaVFYYU0wc25Fd3o2TmlmOHlSTlF1dzJ5MUoKdTNoKzZYa2N6Y3lVT01NSzhaRnhBVDhFOERMVUtpdjM1VmdzSkFDN09RSkNBSWMzdEVNV01tZTVCV3ZXTFVxSQpnV3h5U3UxWDdRSTJrR2dUK1FqRGlhQ2E4b091NVlJTmZscW4reUswR29yNGJzMTBZaUh4SHhpV2t0UVRSdVp4CkhIU3UKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="} \ }'{ "Key": { "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm", "KeyAttributes": { "KeyAlgorithm": "ECC_NIST_P521", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2025-03-08T18:52:01.023000+00:00" } } -
将中间证书导入 AWS Payment Cryptography
使用以下命令导入中间证书:
例
$aws payment-cryptography import-key \--key-material='{"TrustedCertificatePublicKey": { \--certificate-authority-public-key-identifier='"arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm" \ "KeyAttributes": { \ "KeyAlgorithm": "ECC_NIST_P521", \ "KeyClass": "PUBLIC_KEY", \ "KeyModesOfUse": { \ "Verify": true}, \ "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLekNDQVkyZ0F3SUJBZ0lDVDAwd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNREVlTUJ3R0ExVUVBd3dWUzBSSUlFbHVkR1Z5YldWa2FXRjBaU0JEClFTQXhNUTR3REFZRFZRUUZFd1V4TURJd01UQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFPOGwKZFM4c09YQlNWQlVINWxmRWZkNTZxYVVIenExZVN3VGZKdnI5eEFmb2hRNTNWZ2hLUlZoNzhNR2tJTjVCNTBJTAozbmhaU1JnUnRoS20xNkxwc084NEFGa1Z0ZEpOaEJpYUlQZlRlYXltOHh6OU44KzFWZ3RMTDZBcTBtNkwwMUFwCkUvUmxzUUJ3NWxoakM4VHVOWU1QaUpMYUNPbjJrZVh6SU5SSm01SjJtR3Q1bzFJd1VEQWZCZ05WSFNNRUdEQVcKZ0JSbklBNi9Vc3RMYUpzTzlpYjg1Zm9DWEcwRk96QWRCZ05WSFE0RUZnUVVaeUFPdjFMTFMyaWJEdlltL09YNgpBbHh0QlRzd0RnWURWUjBQQVFIL0JBUURBZ2JBTUFvR0NDcUdTTTQ5QkFNRUE0R0xBRENCaHdKQ0FmTnJjdXBkClpQd3ZqTGdVeFZiN1NtSXNhY2Z6MVZrNWZFYXZHNlVzdU95Y1lGbHlQQTlJZGgyK0lOcW5jSVg4VEo2cDFJRWkKN3RCTHpPb1l0ZWd2Q1dsL0FrRkRzWHFsWkI5bU93WnNEQy9HZEpEcm5uQ0ZkR29hM1NwZytqbGdhOGdQTmxLbAo1dE9IU0lVZnZxcFhEcWYrdXV6SEc1Z3FjdUhnQU8wOUhuMloyNUc4eVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="} \ }'{ "Key": { "CreateTimestamp": "2025-03-20T18:52:01.023000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5", "KeyAttributes": { "KeyAlgorithm": "ECC", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2025-03-25T18:52:01.023000+00:00" } } -
将公钥证书(Leaf)导入到 AWS Payment Cryptography
尽管您可以导入 Leaf ECC 证书,但目前 AWS 支付加密中除了存储之外没有为其定义的函数。这是因为在使用 ECDH 函数时,叶子证书是在运行时传递的。