Есть ли способ программно преобразовать Keystore экземпляра PKCS11 в JKS?

Я использую смарт-карту, и экземпляр хранилища ключей находится в формате PKCS11. Я хотел создать файл.jks с сертификатом со смарт-карты. Есть ли способ достичь этого программно? Благодарю.

1 ответ

Вы можете (ОДНАКО, ЭТО НЕДОПУСТИМО), при условии, что производитель аппаратного токена поддерживает его и если вы создали объекты PKCS # 11 как извлекаемые.

ВНИМАНИЕ: То, что вы пытаетесь сделать, НЕ безопасно. Вы отбираете цель того, для чего предназначены аппаратные токены. Как только секретный объект создается в аппаратном токене, он не видит свет дня.

Для извлечения объекта PKCS11 необходимо установить CKA_EXTRACTABLE в true, CKA_NEVER_EXTRACTABLE в false, CKA_SENSITIVE в false а также CKA_ALWAYS_SENSITIVE в false,

Большинство производителей аппаратных токенов не поддерживают это. Предполагая, что вы нашли поставщика, который поддерживает это, и создали объекты PKCS11 с вышеуказанными атрибутами, вы можете сделать это, как показано ниже.

Вы можете перебрать записи экземпляра PKS11 KeyStore, вызвав aliases() и найти каждую запись в нем. Это может быть либо KeyPair (PublicKey и PrivateKey), либо сертификат или объект данных (если это токен PIV SmartCard). Вы можете иметь другой экземпляр JKS KeyStore, и теперь вы можете сделать jksKS.setEntry(...) или же jksKS.setCertificateEntry(...),

Если токен не поддерживает создание нечувствительных данных, вы не сможете сначала создать объект PKCS11 с указанными выше атрибутами. Если токен не поддерживает извлечение, токен PKCS11 выдаст исключение, сообщающее, что конфиденциальные данные не могут быть извлечены.

Другие вопросы по тегам