Современные браузеры больше не поддерживают 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:»