我正在使用智能卡,密钥存储实例是PKCS11格式的。我想用智能卡上的证书创建一个.jks文件。有没有办法以编程的方式实现它?谢谢。
发布于 2015-08-01 05:07:50
如果硬件令牌制造商支持它,如果您已经将您的对象创建为可提取的,则可以这样做(但是,是不可取的)。
警告:您要做的是而不是安全。您正在删除硬件令牌的目的。一旦在硬件令牌中创建了一个秘密对象,它就看不到光明了。
要使PKCS11对象可提取,必须将CKA_EXTRACTABLE设置为true,将CKA_NEVER_EXTRACTABLE设置为false,将CKA_SENSITIVE设置为false,将CKA_ALWAYS_SENSITIVE设置为false。
大多数硬件令牌制造商不支持这一点。假设您已经找到了一个支持此功能的供应商,并且您已经创建了具有上述属性的PKCS11对象,那么您可以这样做。
您可以通过调用PKCS11 KeyStore实例条目循环遍历aliases(),并找到其中的每个条目。它可以是KeyPair (PublicKey和PrivateKey),也可以是证书或数据对象(如果是PIV SmartCard令牌)。您可以使用JKS KeyStore的另一个实例,现在可以执行jksKS.setEntry(...)或jksKS.setCertificateEntry(...)。
如果令牌不支持创建非敏感数据,那么首先您将无法创建具有上述属性的PKCS11对象。如果令牌不支持提取,则PKCS11令牌将抛出异常,说明无法提取敏感数据。
https://stackoverflow.com/questions/28850132
复制相似问题