Веб-приложение для подписи документов PDF цифровыми сертификатами, выпущенными центрами сертификации. - PullRequest
2 голосов
/ 31 октября 2011

Представьте себе веб-приложение, написанное на python / django, в котором пользователи проходят проверку подлинности с помощью цифровых сертификатов через apache + mod_ssl (и пользовательский бэкэнд для проверки подлинности django). Как они могут подписывать файлы?Сертификаты выпускаются утвержденными правительством центрами сертификации.

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

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

Возможно ли это безвам нужно программное обеспечение, работающее на компьютере пользователя?

РЕДАКТИРОВАТЬ:

Так что это может быть сделано либо с помощью элемента управления ActiveX или Java-апплета, верно?Это нужно разрабатывать с нуля или кто-нибудь знает решение с открытым исходным кодом?

Ответы [ 4 ]

2 голосов
/ 31 октября 2011

Вы правы в том, что веб-приложению требуется доступ к закрытому ключу на локальном компьютере пользователя или в хранилище PKI.Я разработал такое решение для веб-приложения в сети USAF.

Пользователи подключаются к компьютеру USAF со своей CAC Card , содержащей их учетные данные PKI и закрытый ключ.В нашем решении нам нужно было подписать документы в формате PDF с помощью нашего веб-приложения.Мы создали элемент управления ActiveX, который будет загружать PDF-документ с веб-сайта через веб-сервис, подписывать PDF-файл локально, а затем передавать подписанный PDF-документ обратно на веб-сайт.Эти документы были настолько ограниченной аудиторией, что мы смогли получить разрешение на использование элемента управления ActiveX.Вы идете по правильному пути, поскольку только локально авторизованное приложение будет иметь доступ к хранилищу ключей пользователя.

0 голосов
/ 21 апреля 2019

Более элегантный метод сегодня - Использовать расширение браузера

Одним из таких бесплатных расширений для браузера является Signer.Digital

Более старые методы - это java-апплеты, Active X и т. Д., Которые сняты с производства или постепенно исключаются из новых предложений Modern Browser.

Я немного опоздал, но пишу этот пост, надеясь, что ответ будет полезен для тех, кто все еще ищет расширение для браузера, чтобы подписывать PDF с USB-токена и MODERN Browser.

Пожалуйста, обратитесь к моему ответу в моем сообщении SO Подпишите PDF простым JavaScript , чтобы проверить использование расширений JavaScript и Signer.Digital Browser.

Компонент цифровой подписи Java или .NET от Signer.Digital или любого другого поставщика может использоваться для цифровой подписи PDF с USB-токена браузера.

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

0 голосов
/ 01 ноября 2011

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

0 голосов
/ 31 октября 2011

Как сказал Тамман в своем ответе, правильный подход заключается в том, чтобы иметь клиентский модуль в браузере, и чтобы этот модуль выполнял фактическую подпись.Для выполнения этой работы вы можете подписать Java-апплет или подписать элемент управления ActiveX.

Мы предлагаем такое решение для распределенной подписи с готовыми к использованию клиентскими модулями, но для серверной части требуется .NET или VCL (без Python,извиняюсь).Наше решение не требует передачи документа на клиентскую сторону (в отличие от схемы Таммана) - только небольшой кусок данных отправляется клиенту и подписывается там.

Примечание: клиентский сертификат, используемый для аутентификации клиента по SSL, скорее всего, не будет работать для подписи: эти две операции требуют различного расширения использования ключа в сертификате.

...