Как цифровой подписи документов PDF в веб-приложении?

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

Документ, после его подписания, должен быть отправлен обратно на сервер, где он сохранит подписанную версию.

Сервер работает с классическим ASP/ASP.NET

Куда мне идти?

Ответ 1

Я фактически создал такую ​​систему в нашем веб-приложении. Вот некоторые ссылки, которые я нашел чрезвычайно полезными при этом:

http://www.codeproject.com/KB/vb/Digital_Signatures.aspx

http://www.devx.com/security/Article/17249/0/page/2

http://www.example-code.com/vbdotnet/digSig1.asp

http://www.abanet.org/scitech/ec/isc/dsg-tutorial.html

http://livedocs.adobe.com/livecycle/es/sdkHelp/programmer/sdkHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=sdkHelp&file=signaturesSigning.90.4.html

http://www.c-sharpcorner.com/UploadFile/Gowri%20S%20Paramasivam/Cryptography211242005003308AM/Cryptography2.aspx

Ответ 2

Ищите библиотеки java для подписывания документов PDF. Вы можете развернуть их в апплете, который должен соответствовать вашему веб-приложению. Если пользователям необходимо предварительно просмотреть документы PDF перед их подписанием, посмотрите на java bean jPDFNotes из программного обеспечения Qoppa. Если документы могут быть подписаны без предварительного просмотра, посмотрите на их другие библиотеки jPDFFields или jPDFProcess. Существует также iText библиотека с открытым исходным кодом, но iText не поддерживает просмотр документов, поэтому он будет работать только во втором сценарии.

Ответ 3

Попробуйте Adobe LiveCycle Designer
Это поставляется с Adobe Master Suit и имеет все возможности для ES. Он работает с инфраструктурой PKI и публикует "сертифицированные" документы PDF, подтверждающие подлинность получателей. Лучше начать с чего-то, что уже существует.

Ответ 4

Я бы использовал iTextSharp для подписи PDF. iTextSharp является бесплатным и открытым исходным кодом. Взгляните на пример подписи кода PDF http://itextpdf.sourceforge.net/howtosign.html Я использовал iTextSharp перед надежностью.

Ответ 5

Я использую для записи FDF в PDF-программу из набора инструментов Adobe FDF. Я мог бы взять полную версию Acrobat Pro и использовать поля места W-2, I-9 Federal Forms, а также подписи и подписи подписи Topaz Systems, основанные на точках давления, углах и т.д.... алгоритм activex сохранил бы подпись и все в базу данных sql-сервера, и я мог бы пойти другим путем и заполнить PDF файл с SQL Server.

Ответ 6

В нашей библиотеке SecureBlackbox есть распределенная надстройка для криптографии, которая делает то, что вам нужно. Клиентские модули, которые подписывают, могут быть расширены пользователем (мы предоставляем полный исходный код). Подробное описание надстройки на нашем сайте или в этот ответ SO.

Ответ 7

Большинство веб-приложений требуют цифровой подписи документов, файлов, электронных возвратов (XML или JSON) и т.д. От пользователей браузера, использующих хранилище ключей на локальном компьютере пользователя, токен USB или смарт-карту. Более старые методы - это Java-апплеты, Active X и т.д., Которые постепенно исключаются или выходят из новых предложений Modern Browser.

В последнее время много говорят об API WebCrypto, но на данный момент API WebCrypto не предоставляет доступ к (Windows) или любым другим хранилищам ключей или локальному устройству шифрования USB/Smartcard.

Также в большинстве сценариев подписывания для требования защиты возвращаемых данных в пределах границ сервера не рекомендуется отправлять полный файл PDF в браузер или на сервер API подписи.

Таким образом, рекомендуется использовать javascript через расширение браузера для доступа к какому-либо приложению, работающему в локальной системе, для доступа к локальному хранилищу ключей, а также для создания подписи и отправки обратно (контейнер PKCS7 или CMS в случае подписи PDF) на сервер, где подпись может быть введена вернуться к PDF, из которого хеш был создан для подписи и отправлен в браузер или на сервер подписи api.

Для сценариев подписи на основе браузера одним из таких бесплатных расширений Chrome является расширение Signer.Digital chrome. Локальная система (хост, работающий за браузером Chrome на Windows) может быть загружен с https://signer.digital/downloads/Signer.Digital.Chrome.Host.Setup.zip. При установке и перезапуске Chrome автоматически добавляется Signer.Digital Chrome. расширение

Фактическая работа этого расширения иллюстрируется здесь

JavaScript для вызова метода из расширения:

    //Calculate Sign for the Hash by Calling function from Extension SignerDigital
    SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")      //or "SHA256"
     .then(
            function (signDataResp) {
              //Send signDataResp to Server
        },
            function (errmsg) {
                //Send errmsg to server or display the result in browser.
              }
     );

В случае успеха возвращает подпись pkcs7 в кодировке Base64 - используйте подходящую библиотеку или библиотеку, предоставленную Signer.Digital для вставки знака в pdf. Если не удалось, возвращает сообщение об ошибке, начиная с "Ошибка SDHost:"

Ответ 8

Слишком легко сделать это.

Вы можете разрешить пользователям загружать PDF-документ.

Пользователи могут открыть документ в Adobe Reader и подписать их (не уверен, что это охватывает вашу концепцию "подписания" PDF файла).

Затем пользователи могут загрузить документ, который затем можно проверить для подписей. Это похоже на относительно простой процесс.