有没有办法以编程方式将实例PKCS11的密钥库转换为JKS?

时间:2015-03-04 08:53:13

标签: java pkcs#11 jks

我使用的是智能卡,密钥库实例采用PKCS11格式。 我想用智能卡中的证书创建一个.jks文件。 有没有办法以编程方式实现它?感谢。

1 个答案:

答案 0 :(得分:0)

如果硬件令牌制造商支持它,并且您已将PKCS#11对象创建为可提取的,则可以,(但是,这是不可行的)。

警告您要做的是安全。您正在消除硬件令牌的目的。一旦在硬件令牌中创建了一个秘密对象,它就不会看到当天的光。

要使PKCS11对象可被提取,您必须将CKA_EXTRACTABLE设置为true,将CKA_NEVER_EXTRACTABLE设置为false,将CKA_SENSITIVE设置为false }和CKA_ALWAYS_SENSITIVEfalse

大多数硬件令牌制造商都不支持此功能。假设您找到了支持此功能的供应商,并且您已创建具有上述属性的PKCS11对象,则可以按照以下方式执行此操作。

您可以通过调用aliases()来遍历您的PKCS11 KeyStore实例条目,并查找其中的每个条目。它可以是KeyPair(PublicKey和PrivateKey),也可以是证书或数据对象(如果是PIV SmartCard令牌)。您可以拥有另一个JKS KeyStore实例,现在可以jksKS.setEntry(...)jksKS.setCertificateEntry(...)

如果令牌不支持创建非敏感数据,则您无法首先使用上述属性创建PKCS11对象。 如果令牌不支持提取,则PKCS11令牌将抛出异常,表示无法提取敏感数据。