Вопрос по php, java – Подписание PDF-файлов на серверном документе с использованием подписи пользователя

4

Вот что я хочу сделать:

user creates document (html) edit -> save PDF on server ask if user wants to sign the document (yes) here is the problem (no) no problem ???? (not important)

Итак, теперь проблема, с которой я сталкиваюсь, заключается в том, как это сделать (да) на шаге 3. Если подпись на сервере не проблема, у меня есть несколько html-> php-> gt; pdf классов, которые могут подписываться с помощью цифровых подписей, но подпись должен быть на сервере в виде файла. Вопрос в том, как я могу сделать это прямо на сервере. Пользователь выбирает «да», подпись читается (из его считывателя на его компьютере) и отправляется на сервер, и подпись завершена. Здесь я считаю, что не могу сделать это без чего-то вроде Java или около того. По моему мнению, PHP и JavaScript наверняка не хватит для этого действия.

Кто-нибудь сталкивался с такой проблемой? Может быть, какая-нибудь готовая к использованию библиотека?

Постскриптум Я не совсем уверен, верны ли теги, но не могу понять, что поставить.

@esej Полагаю, он имеет в виду USB-флешку с информацией о подписи. Ahatius
Что вы подразумеваете под «своим читателем на своем компьютере»? esej
Ну, в этом-то и вся проблема - не так ли? esej
@esej Да, это то, что я имею в виду. Например, подпись на устройстве чтения подписей USBhidglobal.com/prod_detail.php?prod_id=182 Nikola
Я не могу следовать за вами здесь, если есть пользовательское устройство, которое выполняет подписывание - сервер obv. не могу этого сделать. Может быть, вы хотите, чтобы сервер для создания дайджеста был подписан? (если это так, вам нужен какой-то общий способ общения / попросить подпись) esej

Ваш Ответ

1   ответ
6

Если сертификат с закрытым ключом находится на клиенте, то для подписи необходим клиентский модуль. JavaScript не будет достаточно, поскольку у него не будет доступа к ключу на клиенте. Пока вы можете попробовать позвонитьCAPICOM из JavaScript, это частичное (без поддержки PKCS # 11), специфичное для Windows и устаревшее решение. Лучше всего иметь апплет браузера, написанный на Java, который будет выполнять подписывание (см. Ниже).

Наш продукт SecureBlackbox имеет распределенную подпись надстройки, которая делает именно то, что вы описываете (на данный момент поддерживаются PHP, Java, ASP.NET и скомпилированные модули). Вы можете увидеть схему работы надстройки:

enter image description here

В нашем продукте мы предлагаем готовые модули браузера - Java-апплет, элемент управления ActiveX и Flash-апплет, но в большинстве случаев достаточно Java-апплета, поскольку он может получить доступ к хранилищам PKCS # 11 и хранилищу сертификатов Windows в Windows. Для браузеров, которые не поддерживают Java-апплеты, SecureBlackbox позволяет использовать апплет через Java Web Start в качестве внешнего «приложения».

Вероятно, вам потребуется заново создать эту полную схему, однако это большая хитрость для вычисления хэша на сервере и передачи его клиенту для подписания, а затем встраивания подписи обратно в документ.

Вероятно, было бы проще передать весь документ клиенту и иметь Java-апплет, который будет подписывать этот документ с помощью iText или Java-версии нашего SecureBlackbox, а затем загружать документ обратно на сервер.

Похожие вопросы