Если эти процессы установлены, вы можете использовать код на стороне сервера, который принимает подписанный PDF-документ и проверяет содержимое сертификата для подписи. Например, вы читаете политики сертификатов и ожидаете увидеть там конкретную запись. Если он представлен, вы можете с уверенностью предположить, что документ был подписан с использованием сертификата, хранящегося на смарт-карте, поскольку ключ не может быть скопирован в любое место с устройства карты. Если сертификат не содержит конкретной записи в политиках сертификатов, вы можете отклонить принятие документа и попросить клиента использовать соответствующий сертификат.
отаю над требованием, которое требует цифровой подписи для файлов PDF в ASP.Net C # и разработало одно приложение, которое получает сертификат клиента с помощью USB-токена на моем локальном компьютере. Но, при размещении этого приложения на сервере IIS получаю ошибку«Текущая сессия не является интерактивной».
У любого есть идея, как мы можем получить сертификаты X509 с клиентского компьютера в ASP.Net C #, и это приложение, размещенное на сервере IIS, не является консольным приложением.
Мой код для справки:
private void getSign()
{
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
X509Certificate2 cert = null;
//manually chose the certificate in the store
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(store.Certificates, null, null, X509SelectionFlag.SingleSelection);
if (sel.Count > 0)
cert = sel[0];
else
{
//MessageBox.Show("Certificate not found");
return;
}
SignWithThisCert(cert);
}