2013-08-06 2 views
4

Я пытаюсь подписать некоторые данные (форму POST) в веб-приложении с помощью Java-апплета. Сертификат x509 пользователя будет иметь криптокен/смарт-карту. Подпись должна быть в прикрепленном формате pkcs # 7.Реализация цифровой подписи в Java-апплете

Я использую этот учебник/код в качестве отправной точки в создании апплета - http://www.developer.com/java/other/article.php/3587361/Java-Applet-for-Signing-with-a-Smart-Card.htm

Самая большая проблема для меня здесь, кажется, тот факт, что апплет запрашивает у пользователя расположение PKCS # 11 реализации библиотека. Это большой нет-нет для меня, потому что мой типичный пользователь не будет знать местоположение своей библиотеки pkcs # 11.

Из документации Oracle по Java - http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html кажется, что Java не поставляется с собственной реализацией.

Есть ли способ сделать это подписание, не спрашивая пользователя об этом местоположении. Я в порядке с решением, которое работает только с IE и Firefox в Windows.

С несколькими смарт-картами/криптокенами, которые я использовал, я заметил, что в тот момент, когда я его вставляю, я вижу сертификат в IE & персональной вкладке сертификатов Firefox. Это, вероятно, означает, что криптографический токен регистрирует все сертификаты, которые он содержит в ОС, когда вы вставляете карту и отменяет ее, когда вы ее удаляете. Таким образом, вероятно, он должен отображать некоторый интерфейс для OS/Browser, когда он это делает - может ли это не использоваться для подписания?

ответ

3

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

К сожалению, DLL PKCS # 11 нигде не зарегистрирована, поэтому вы не можете не спрашивать пользователя о местонахождении этой DLL.

Большинство аппаратных устройств поддерживают интерфейсы PKCS # 11 и CryptoAPI. В интерфейсе CryptoAPI CSP DLL предоставляет аппаратные сертификаты для механизма CryptoAPI и, следовательно, для приложений. В этом случае вы можете использовать классы Java, которые работают с Windows CryptoAPI.

PKCS # 11 - это интерфейс, реализованный поставщиками оборудования, поэтому Java не может реализовать его собственный. JVM не является аппаратным обеспечением и не содержит сертификатов (даже если бы это было так, это не решило бы вашу проблему). Мне нужно заметить, что Firefox имеет встроенный драйвер PKCS # 11, через который Firefox получает доступ к своим собственным сертификатам. Это было сделано для единообразной поддержки программных и аппаратных сертификатов.

+0

'В этом случае вы можете использовать классы Java, которые работают с Windows CryptoAPI.» Можете ли вы рассказать об этом - какие классы это? – user93353

+0

@ user93353 Пожалуйста, найдите «sunMSCAPI» - это то, что вам нужно. Я не знаю внутренних внутренних компонентов Java, чтобы предоставить вам подробную информацию о реализации. –

+0

И, может быть, вы можете найти вышеупомянутое дополнение полезным и не тратить время на свои собственные. Вы можете проверить это на https://www.eldos.com/sbb/desc-dc.php –

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