Java-апплет для подписи (с помощью токена / смарт-карты) и загрузки документов в сервлет - PullRequest
3 голосов
/ 15 января 2012

Любые указания о том, как бороться с этим сценарием: у меня есть одно веб-приложение, которое должно загрузить локальный файл (например, еще не подписанный, текстовый файл), а затем подписать его локально (таким образом, один апплет) с помощью частного ключ хранится в токене / смарт-карте, принадлежащей автору текстового файла (java stuff / api / etc) и, наконец, выполняет HTTP (S) / POST для моего выбранного сервлета?

если бы мне не приходилось самостоятельно писать апплет, это было бы лучше :), поэтому я ищу что-то (с открытым исходным кодом или нет, так как здесь и там должен быть какой-то обман), который может просто сделать "целое" вещь "на стороне клиента (браузер) для меня самым чистым способом, например: откройте диалог для пользователя, чтобы выбрать файл для подписи; выбор сертификата из токена / смарт-карты; обернуть (эффективно подписать) исходный документ в подписанный XML и, наконец, выполнить HTTP / HTTPS POST для моего сервлета.

1 Ответ

0 голосов
/ 25 мая 2019

Современные браузеры больше не поддерживают Java-апплеты или ActiveX.Вам нужно будет использовать расширение браузера, которое может получить доступ к вашему локальному хранилищу сертификатов, чтобы подписать хэш на клиентском устройстве.

Для сценариев подписания на основе браузера одним из таких бесплатных расширений Chrome, предоставленных моей компанией, является расширение Chrome Signer.Digital.Установку, устанавливаемую на клиентское устройство, можно загрузить с https://download.cnet.com/Signer-Digital-Chrome-Extension/3000-33362_4-78042540.html

При установке этого хоста и перезапуске Chrome автоматически добавится расширение Signer.Digital Chrome

Фактическая работа этого расширения показана here

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.
              }
     );

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

...