Если эти процессы установлены, вы можете использовать код на стороне сервера, который принимает подписанный 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);
}
 Crypt3211 окт. 2017 г., 14:03
get X509Certificates from client machine - зачем тебе это? Если вам нужно использовать клиентские сертификаты для подписи PDF, то эта операция ДОЛЖНА выполняться на клиенте, а не на сервере.
 Crypt3211 окт. 2017 г., 15:18
Хорошо, сохраните сертификат на USB-токене. Но вы должны выполнить подписывание PDF на стороне клиента, и клиент загрузит вам подписанный PDF. Вы можете проверить, правильно ли он подписан. Но разделять клиентские ключи с сервером - это, безусловно, плохая идея, потому что закрытый ключ клиента просачивается в веб-приложение и больше не является приватным.
 Xplora11 окт. 2017 г., 20:08
@ Подписка Crypt32 была запущена для веб-приложения, и мы не хранили никаких закрытых ключей на нашем сервере. Мы просто хотим выбрать сертификат из пользовательского токена USB и выполнить подпись PDF в веб-приложении. Мы выполнили это действие в asp.net, используя библиотеку iTextSharp для подписи PDF, но это работает только в локальной системе. Мы разместили эту заявку на iis, мы получаем вышеупомянутую ошибку.
 Xplora12 окт. 2017 г., 07:19
@ Crypt32 Подскажите, возможно ли отобразить диалоговое окно выбора сертификата с USB-токена для цифровой подписи PDF в ASP.Net C #.
 Xplora11 окт. 2017 г., 14:23
@ Crypt32 У меня есть веб-приложение, которое размещено на IIS. При этом пользователь загружает PDF и подписывает его цифровой USB-токен с цифровой подписью. Все это действие выполняют в веб-приложении. Нам нужны сертификаты X509 для цифровой подписи PDF, который хранится на USB-токене пользователя.

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

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