Вот что я хочу сделать:
Итак, теперь проблема, с которой я сталкиваюсь, заключается в том, как это сделать (да) на шаге 3. Если подпись на сервере не проблема, у меня есть некоторые html-> php-> pdf классы, которые могут подписываться с цифровыми подписями, но подпись должна быть на сервере в виде файла. Вопрос в том, как я могу сделать это непосредственно на сервере. Пользователь выбирает «да», подпись читается (от его читателя на своем компьютере) и отправляется на сервер, а подпись выполняется. Здесь я считаю, что я не могу сделать это без чего-то вроде Java. На мой взгляд, PHP и JavaScript наверняка, как ад, не будут достаточными для этого действия.
Кто-нибудь сталкивался с такой проблемой? Может быть, некоторые готовы использовать библиотеку?
PS не совсем уверен, правильны ли теги, но не мог понять, что поставить.
Если сертификат с закрытым ключом находится на клиенте, вам нужен клиентский модуль для подписи. JavaScript будет недостаточно, так как он не будет иметь доступ к ключу на клиенте. Хотя вы можете попробовать позвонить CAPICOM с JavaScript , это частичная (без поддержки PKCS # 11), зависящее от Windows и устаревшее решение. Лучшим вариантом является наличие в браузере апплета, написанного на Java, который будет выполнять подписание (см. Ниже).
Наш продукт SecureBlackbox имеет надстройку с распределенной подписью, которая делает именно то, что вы описываете (на данный момент поддерживаются PHP, Java, ASP.NET и скомпилированные модули). Вы можете увидеть, как работает надстройка:
В нашем продукте мы предлагаем предустановленные модули браузера – Java-апплет, элемент управления ActiveX и апплет Flash, но в большинстве случаев Java-апплет достаточно, так как он может обращаться к хранилищам PKCS # 11 и хранилищу сертификатов Windows в Windows. Для браузеров, которые не поддерживают Java-апплеты SecureBlackbox позволяет использовать апплет через Java Web Start, как внешнее «приложение».
Вероятно, вам нужно будет воссоздать эту полную схему, однако это большой трюк для расчета хэша на сервере и передачи его клиенту для подписания, а затем вставить подпись обратно в документ.
Вероятно, было бы легче передать полный документ клиенту и иметь апплет Java, который подпишет этот документ с помощью iText или Java-версии нашего SecureBlackbox, а затем загрузит документ обратно на сервер.