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

如何在java中将密钥对导入密钥库并使密钥不可导出,java,keystore,private-key,Java,Keystore,Private Key,我正在用java向windows密钥存储添加密钥对(私钥和证书)。我需要使私钥不可导出。这样做的Java代码使私钥可导出。我怎样才能改变这个 我找不到任何可以更改的属性或属性。方法获取LoadStoreParameter,但它似乎是关于为私钥设置密码的 PrivateKey privateKey=...; Certificate certificate=...; KeyStore keyStore = KeyStore.getInstance("Windows-MY"); keyStore.l

我正在用java向windows密钥存储添加密钥对(私钥和证书)。我需要使私钥不可导出。这样做的Java代码使私钥可导出。我怎样才能改变这个

我找不到任何可以更改的属性或属性。方法获取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服务之间的桥梁。看

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

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