Доступ к личному хранилищу ключей Windows Local Machine с помощью Java (SunMSCAPI) - PullRequest
0 голосов
/ 06 июля 2018

Есть ли способ получить доступ к хранилищу личного ключа Windows с помощью Java с помощью SunMSCAPI ?

Обычно вы можете использовать либо WINDOWS-ROOT (что примерно эквивалентно доверенному хранилищу в Java), либо WINDOWS-MY (который содержит личные сертификаты, примерно эквивалентно хранилищу ключей в Java) для извлечения сертификатов из хранилища сертификатов Windows.

Это отлично работает для пользователей, но даже при олицетворении пользователя SYSTEM мне не удалось получить личные сертификаты локального компьютера.

Существуют некоторые вопросы, касающиеся этого, которые используют JNA (чего я хотел бы избежать, тем более, что, похоже, сложно получить секретный ключ оттуда).
Кроме того, кто-то использовал psexec для олицетворения пользователя SYSTEM (используя psexec -s ). Я тоже пробовал это, но безуспешно.
В конце концов, в Java Bug System также есть открытая ошибка .

Если у кого-нибудь есть идея, как получить сертификаты из личного хранилища локального компьютера в Windows с использованием Java, я был бы признателен.

1 Ответ

0 голосов
/ 15 августа 2018

Да и нет. Вы можете использовать утилиту wcsa , которая будет перехватывать вызовы JVM для API Windows Crypto и позволит вам получить доступ к учетным данным локального компьютера. Это, конечно, подделка вокруг реальной проблемы JDK-6782021 , о которой сообщалось десять лет назад. Но он позволяет безболезненно обращаться к сертификатам локальной машины!

Так что да, к ним можно получить доступ, но нет, к ним невозможно получить доступ с помощью простого Java API. Вы можете получить к ним доступ, используя обычную Java, используя коммерческий продукт JCAPI , но для большинства применений утилита wcsa подойдет.

Сопровождающие Open JDK готовы взять патч, хотя , поэтому, возможно, у вас есть шанс исправить его, используя код, предоставленный в wcsa repo:)

...