Как импортировать пару ключей в хранилище ключей в Java и сделать ключ не экспортируемым - PullRequest
1 голос
/ 11 апреля 2019

Я добавляю пару ключей (закрытый ключ и сертификат) в хранилище ключей 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 Ответ

1 голос
/ 11 апреля 2019

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

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

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

...