Как добавить электронную подпись в файл PDF со смарт-карты?

У меня есть приложение Java EE, которому необходимо реализовать электронную подпись PDF-файлов. Пользователь должен иметь возможность щелкнуть ссылку, которая создаст PDF-файл на основе данных в базе данных и увидит PDF-файл в своем браузере. Затем пользователь должен иметь возможность «подписать» документ, используя свой закрытый ключ, хранящийся на его смарт-карте (которая подключена к устройству чтения смарт-карт на ПК, который они используют). Пользователи используют Windows 7 и JRE 1.6.

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

Кто-нибудь делал это раньше и имеет решение?


person BestPractices    schedule 12.06.2012    source источник
comment
Итак, у нас есть один ответ, включающий коммерческий продукт; кто-нибудь знает о некоммерческом продукте, который добьется этого?   -  person BestPractices    schedule 13.06.2012
comment
Современные браузеры больше не поддерживают апплеты или ActiveX. В этом ответе SO есть ссылка для полной загрузки рабочего проекта. stackoverflow.com/a/55676351/9659885   -  person Bharat Vasant    schedule 07.02.2020


Ответы (2)


  1. Это не поможет прочитать сертификат со смарт-карты, так как вам нужен закрытый ключ.
  2. Вы не должны (и чаще всего не можете) читать закрытый ключ со смарт-карты (вот причина использования смарт-карты)
  3. Чтобы получить доступ к смарт-карте, вам необходимо подключить один из собственных API, таких как обычный ПК/SC, PKCS#11 или CSP.
  4. Для этого из браузера вам понадобится либо ActiveX, либо апплет.
  5. Создать это с нуля очень амбициозно.

Некоторая важная информация: - какой считыватель - какая смарт-карта - какой браузер - какую ОС выбрать или разработать решение

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

person mtraut    schedule 12.06.2012
comment
Или используйте то, что существует (их много), или используйте собственные плагины или другие решения, которые подходят для этого случая. Я думаю, что в наши дни собственный плагин даже лучше, чем Java, из-за недавних эксплойтов, которые часто отключают Java по умолчанию. - person Martin Paljak; 13.06.2012
comment
Я не хочу строить с нуля. В настоящее время мы используем элемент управления ActiveX для чтения из устройства чтения, которое подключено к компьютеру с Windows 7. Это карта DoD CAC. В идеале мы хотели бы использовать библиотеки с открытым исходным кодом (читай: бесплатно) через апплет. @martin-- есть идеи? - person BestPractices; 13.06.2012
comment
@mtraut: как говорится ... пожалуйста, предоставьте свою коммерческую контактную информацию. - person BestPractices; 13.06.2012
comment
@BestPractices - если вы сейчас используете ActiveX, что с ним не так? Выполняет ли он знаковую функцию? Должны ли вы быть независимыми от платформы? Вы ищете только интеграцию PDF? - person mtraut; 13.06.2012
comment
@BestPractices - как говорится - не стесняйтесь обращаться к mtraut по адресу intarsys dot de - person mtraut; 13.06.2012
comment
@martin - я не знаю (многих) продуктов, которые подписывают PDF-документ на клиенте с помощью смарт-карты - по крайней мере, не бесплатно. Можешь дать ссылки? - person mtraut; 13.06.2012
comment
@mtraut - элемент управления ActiveX блокирует использование Internet Explorer, и мы хотели бы поддерживать больше типов браузеров, если это возможно. Мы также хотим отказаться от нашего текущего решения для электронной подписи (которое работает, но было закрыто). - person BestPractices; 13.06.2012
comment
спасибо @мартин. Но, возможно, вопрос был недостаточно конкретным. Как правило, в среде толстого клиента, взаимодействующей с PKCS # 11 (по крайней мере, с некоторыми картами PKCS # 15), недостатка в программном обеспечении нет. Какое программное обеспечение может подписать PDF в браузере? - person mtraut; 16.06.2012

Используйте PDF-студию. У меня была проблема с моим файлом config.cfg для чтения CAC, но после того, как я удалил строку «slot = 1», он заработал как чемпион. Мой файл теперь выглядит так:

name = SunPKCS11
library = /usr/lib64/libcackey.so

Для получения дополнительной информации посетите: https://www.qoppa.com/pdfstudio/

person Frankie    schedule 21.05.2017