本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CloudHSM KeyStore 客户端 SDK 5 的 Java 类
该 AWS CloudHSM KeyStore
类提供特殊用途的PKCS12密钥存储库。该密钥库可以将证书与您的密钥数据一起存储,并将它们与存储在 AWS CloudHSM上的密钥数据相关联。该 AWS CloudHSM KeyStore
类实现了 Java 加密扩展 (SPI) 的KeyStore
服务提供者接口 (JCE)。有关使用的更多信息KeyStore
,请参阅 C lass KeyStore
注意
由于证书是公共信息,并且为了最大限度地提高加密密钥的存储容量,因此 AWS CloudHSM 不支持在上HSMs存储证书。
为 AWS CloudHSM 客户端 SDK 5 选择合适的密钥库
AWS CloudHSM Java 加密扩展 (JCE) 提供商提供特殊用途的云AWS。HSM KeyStore该 AWS CloudHSM KeyStore
类支持将密钥操作卸载到证书的HSM本地存储和基于证书的操作。
按HSM KeyStore 如下方式加载特殊用途的云:
KeyStore ks = KeyStore.getInstance("CloudHSM")
初始化 AWS CloudHSM KeyStore客户端 SDK 5
使用 AWS CloudHSM KeyStore 与登录JCE提供商相同的方式登录。您可以使用环境变量或系统属性文件,并且应该在开始使用云之前登录HSM KeyStore。有关HSM使用JCE提供商登录的示例,请参阅登录到HSM
如果需要,您可以指定密码来加密包含密钥存储数据的本地PKCS12文件。创建 AWS CloudHSM 密钥库时,需要设置密码,并在使用加载、设置和获取方法时提供密码。
按如下方式实例化一个新的 Cloud HSM KeyStore 对象:
ks.load(null, null);
使用 store
方法将密钥库数据写入文件。从那时起,您可以使用带有源文件和密码的 load
方法加载现有密钥库,如下所示:
ks.load(inputStream, password);
使用 AWS CloudHSM KeyStore 我们的 AWS CloudHSM 客户端 SDK 5
AWS CloudHSM KeyStore 符合 JCE Class KeyStore
-
load
从给定输入流加载密钥库。如果在保存密钥库时设置了密码,则必须提供相同的密码才能成功加载。将两个参数都设置为 null 可以初始化一个新的空密钥库。
KeyStore ks = KeyStore.getInstance("CloudHSM"); ks.load(inputStream, password);
-
aliases
返回给定密钥库实例中所有条目的别名的枚举。结果包括本地存储在PKCS12文件中的对象和驻留在文件中的对象HSM。
示例代码:
KeyStore ks = KeyStore.getInstance("CloudHSM"); for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) { String label = entry.nextElement(); System.out.println(label); }
-
containsalias
如果密钥库可以访问至少一个具有指定别名的对象,则返回 true。密钥库会检查存储在PKCS12文件中的本地对象和驻留在文件中的对象HSM。
-
deleteEntry
从本地PKCS12文件中删除证书条目。不支持使用删除存储HSM在中的密钥数据 AWS CloudHSM KeyStore。您可以使用 Destroyable
接口的 destroy
方法删除密钥。((Destroyable) key).destroy();
-
getCertificate
返回与别名关联的证书(如果可用)。如果别名不存在或引用的对象不是证书,则该函数返回NULL。
KeyStore ks = KeyStore.getInstance("CloudHSM"); Certificate cert = ks.getCertificate(alias);
-
getCertificateAlias
返回其数据与给定证书匹配的第一个密钥库条目的名称(别名)。
KeyStore ks = KeyStore.getInstance("CloudHSM"); String alias = ks.getCertificateAlias(cert);
-
getCertificateChain
返回与给定别名关联的证书链。如果别名不存在或引用的对象不是证书,则该函数返回NULL。
-
getCreationDate
返回由给定别名标识的条目的创建日期。如果创建日期不可用,则函数返回证书生效的日期。
-
getKey
GetKey 传递给HSM并返回与给定标签对应的键对象。正如
getKey
直接查询一样HSM,它可以用于上的任何密钥,HSM无论该密钥是否由生成 KeyStore。Key key = ks.getKey(keyLabel, null);
-
isCertificateEntry
检查具有给定别名的条目是否表示证书条目。
-
isKeyEntry
检查具有给定别名的条目是否表示密钥条目。该操作会同时在PKCS12文件和中HSM搜索别名。
-
setCertificateEntry
将给定证书分配给给定别名。如果给定的别名已被用于标识密钥或证书,则会引发
KeyStoreException
。您可以使用JCE代码获取密钥对象,然后使用 KeyStoreSetKeyEntry
方法将证书与密钥相关联。 -
使用
byte[]
密钥执行setKeyEntry
客户端 SDK 5 API 目前不支持此功能。
-
使用
Key
对象执行setKeyEntry
将给定的密钥分配给给定的别名并将其存储在. HSM 如果密钥在中尚不存在HSM,则会将其HSM作为可提取的会话密钥导入到。
如果
Key
对象属于类型PrivateKey
,则它必须伴随相应的证书链。如果别名已存在,则
SetKeyEntry
调用会引发KeyStoreException
,并阻止该密钥被覆盖。如果密钥必须被覆盖,请使用KMU或JCE用于此目的。 -
engineSize
返回密钥库中的条目数。
-
store
将密钥存储库作为PKCS12文件存储到给定输出流,并使用给定的密码对其进行保护。此外,它会保留所有加载的密钥(使用
setKey
调用进行设置)。