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