2011-07-25 3 views
1

Мне нужно написать утилиту для цифровой подписи. Я уже сделал это, используя следующий пример кода.Цифровое подписание без пароля

KeyStore ks = KeyStore.getInstance(KeyStoreType); 
ks.load(new java.io.FileInputStream(pfxPath), password.toCharArray()); 

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

Мой вопрос в том, есть ли способ, чтобы я мог создать некоторое хранилище ключей (или базу данных сертификатов или что-то еще), где владелец PFX впервые вводит пароль, и я могу использовать это хранилище для дальнейшего подписания.

+3

Где проблема с выполнением этого кода один раз при запуске программы (или для первого использования), а затем повторное использование этого же хранилища ключей? –

+0

Нет проблем с кодом. Мой код может подписать любые данные. Но каждый раз мне нужно предоставить файл PFX и его пароль. Если я сделаю его статическим KS, тогда мне нужно будет ввести пароль при запуске. Но я делаю веб-приложение. Как я могу получить пароль в первый раз? – noquery

+0

На какой инфраструктуре работает ваше приложение? Если вы используете сервлеты, вы можете передать init-param? [link] (http://www.exampledepot.com/egs/javax.servlet/GetInit.html) – PhilW

ответ

1

Вы можете разработать автономный код, который может генерировать сериализованный файл, имеющий объект KS. Ваш клиент может передать свой пароль на своей машине. Так что это будет без риска.

Вы можете десериализовать содержимое файла в своем приложении для дальнейшего использования.

+1

Еще одна идея пришла мне в голову после прочтения вашего ответа, что, если мое автономное приложение создаст хранилище ключей, и я использую это хранилище ключей в мой код. В этом случае не требуется сериализация/десериализация. – noquery

+0

Это также хороший способ –

Смежные вопросы