Если эти процессы установлены, вы можете использовать код на стороне сервера, который принимает подписанный 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);
}

Ответы на вопрос(0)

Ваш ответ на вопрос