如何在Java中将密钥对导入密钥库并使密钥不可导出

时间:2019-04-11 10:30:36

标签: java keystore private-key

我在Java的Windows密钥存储中添加了一个密钥对(私钥和证书)。我需要使私钥不可导出。执行此操作的Java代码使私钥可以导出。我该如何更改?

我没有找到可以更改此属性的任何属性。 Keystore.store方法获取LoadStoreParameter,但它似乎与设置私钥密码有关。

PrivateKey privateKey=...;
Certificate certificate=...;

KeyStore keyStore = KeyStore.getInstance("Windows-MY");
keyStore.load(null);
keyStore.setKeyEntry("alias",privateKey,"".toCharArray(),new java.security.cert.Certificate[]{certificate});

1 个答案:

答案 0 :(得分:1)

对Windows加密服务的访问由SunMSCAPI提供程序管理。它提供了Java JCE API和Windows服务之间的桥梁。参见documentation

  

SunMSCAPI提供程序使应用程序可以使用标准JCA / JCE API来访问Microsoft Windows平台上的本机加密库,证书存储和密钥容器。 SunMSCAPI提供程序本身不包含加密功能,它只是Java环境与Windows上的本机加密服务之间的管道。

SunMSCAPI中的WINDOWS-MY密钥库使用标准的Java KeyStore API,并且它没有定义任何类型的“可提取”属性,因此,恐怕您将无法建立它。