我在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});
答案 0 :(得分:1)
对Windows加密服务的访问由SunMSCAPI提供程序管理。它提供了Java JCE API和Windows服务之间的桥梁。参见documentation
SunMSCAPI提供程序使应用程序可以使用标准JCA / JCE API来访问Microsoft Windows平台上的本机加密库,证书存储和密钥容器。 SunMSCAPI提供程序本身不包含加密功能,它只是Java环境与Windows上的本机加密服务之间的管道。
SunMSCAPI中的WINDOWS-MY
密钥库使用标准的Java KeyStore API,并且它没有定义任何类型的“可提取”属性,因此,恐怕您将无法建立它。