Цифровая подпись PDF на сервере - PullRequest
3 голосов
/ 11 апреля 2011

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

Итак, мне нужно подписать PDF-файлы на сервере с помощью сертификата клиента.

Спасибо

Ответы [ 4 ]

3 голосов
/ 27 мая 2011

Поскольку извлечь или отправить секретный ключ клиента невозможно или в любом случае безопасно, для подписи pdf-файлов на сервере необходимо установить «сеанс» с клиентом и позволить ему вычислить подпись.


Шаги должны быть примерно такими:

1 - клиент отправляет свой публичный сертификат для встраивания в подписанный pdf

2 - сервер генерирует PDF, встраивает сертификат и вычисляетхеш (например, sha1)

3 - сервер отправляет хеш клиентскому апплету

4 - апплет вычисляет цифровую подпись с помощью своего закрытого ключа

5-апплет отправляет подпись на сервер

6 - сервер встраивает цифровую подпись и закрывает pdf.


Чтобы сделать это с itext, вы должны будете использовать метод preclose последобавление сертификата, чтобы можно было вычислить хэш sha1 в итоговом документе.Затем, предварительно закрыв PDF-файл, вам нужно будет вычислить хеш PDF-файла и отправить его клиенту.Будьте осторожны: несмотря на это, вы должны будете хранить документ в памяти, например, во время сеанса на сервере.

Чтобы сгенерировать pdf, встроить сертификаты и подготовить документ, вы можете использовать itextsharp, порт c # для itext.библиотека.Чтобы вычислить хеш и создать конверты pkcs7, вы можете использовать .net crypto api.

Надеюсь, это поможет.

2 голосов
/ 11 апреля 2011

Возможно, вам не хватает точки для цифровой подписи документа.Подписание документа предназначено для действий пользователя.

Вы можете создать документ на стороне сервера и предоставить его с типом контента "application / pdf", который будет обслуживать документподписан.Когда они подпишут его, вы можете использовать pdf форму для отправки подписанного документа обратно на сервер.

0 голосов
/ 28 июля 2013

вы также можете использовать подписывающий сервис, например (извините, я просто знаю, что этот работает) http://www.signagate.de - эти ребята предлагают веб-сервис, который позволяет вам «загрузить» неподписанный PDF, который будетбыть отправленным обратно с так называемой «промежуточной» подписью, которая соответствует даже всем законам о подписи в ЕС как квалифицированная подпись (по крайней мере, для счетов, как я знаю).

Забавно, вам просто нужнобыть в состоянии сделать звонок в их службу, чтобы получить ответ в формате pdf.

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

Джимми

0 голосов
/ 04 января 2013

AspPdf + Сетевой шлюз USB или AnywhereUSB может помочь, если клиент использует карту USB smard на своем компьютере.

...