Как импортировать пару ключей в хранилище ключей на Java и сделать ключ недоступным для экспорта

#java #keystore #private-key

#java #хранилище ключей #закрытый ключ

Вопрос:

Я добавляю пару ключей (закрытый ключ и сертификат) в хранилище ключей Windows на Java. Мне нужно сделать закрытый ключ недоступным для экспорта. 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:

Доступ к криптографическим службам Windows управляется поставщиком SunMSCAPI. Он обеспечивает мост между java JCE API и службами Windows. Смотрите документацию

Поставщик SunMSCAPI позволяет приложениям использовать стандартные API-интерфейсы JCA / JCE для доступа к собственным криптографическим библиотекам, хранилищам сертификатов и контейнерам ключей на платформе Microsoft Windows. Сам поставщик SunMSCAPI не содержит криптографических функций, это просто канал между средой Java и собственными криптографическими службами в Windows.

Хранилище WINDOWS-MY ключей в SunMSCAPI использует стандартный Java KeyStore API, и он не определяет какой-либо тип «извлекаемого» свойства, поэтому, боюсь, вы не сможете его установить.