Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Андрей Карклин  
#1 Оставлено : 11 мая 2021 г. 13:39:49(UTC)
Андрей Карклин

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2020(UTC)
Сообщений: 9
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 1 раз
Здравствуйте, уважаемые коллеги!
У меня вопрос по усовершенствованной подписи pdf. Точнее, по ее созданию на компе с прокси сервером. Я написал на c# приложение для клиента. Это приложение подписывает pdf усовершенствованной подписью, используя CAPICOM. На компе с интернетом работает прекрасно. Но у одного клиента нет. Не может достучаться до заданного tspServerAddress. Вот кстати, код подписывающей функции.

Код:

protected byte[] cades_X_Long_Type_1(int intCSize, PdfSignatureAppearance sap, X509Certificate2 certificate, string url)
        {
            try
            {
                sapPreClose(intCSize, sap);
                Stream rangeStream = sap.GetRangeStream();
                MemoryStream contentStream = new MemoryStream();
                CopyTo(rangeStream, contentStream);
                byte[] content = contentStream.ToArray();
                string tspServerAddress = (url != null && url.Trim() != "" ? url.Trim() : @"http://www.cryptopro.ru/tsp/tsp.srf");
                CPSigner cps = new CPSigner();

                // Импортируем сертификат из X509Certificate2
                CAPICOM.Certificate cert = new CAPICOM.Certificate();
                cert.Import(Convert.ToBase64String(certificate.Export(X509ContentType.Cert)));
                cps.Certificate = cert;

                cps.Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
                cps.TSAAddress = tspServerAddress;
                CadesSignedData csd = new CadesSignedData();
                // base64
                csd.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
                csd.Content = Convert.ToBase64String(content);
                // Создание подписи CAdES BES
                string signature = null;
                signature = csd.SignCades(cps, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES,
                        true, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
                // Дополнение подписи CAdES BES до подписи CAdES X Long Type 1
                signature = csd.EnhanceCades(CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1,
                        tspServerAddress, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
                return Convert.FromBase64String(signature);
            }
            catch (Exception e)
            {
                ExitCode = ProgramExitCode.cades_X_Long_Type_1;
                myWriteLine("Error while cades_X_Long_Type_1 function: " + e.Message);
                return null;
            }
        }


У клиента выбрасывается исключение с текстом "При попытке отправки запроса возникла ошибка HTTP".

Он нарыл в документации, что:
"Указатель на структуру CADES_PROXY_PARA с параметрами прокси (может быть равным NULL). Данный параметр задаёт настройки прокси для доступа к службам актуальных статусов и к службе штампов времени в
процессе создания усовершенствованной подписи. Если указатель равен NULL, то для доступа к службам будут использоваться соответствующие настройки групповых политик клиентов служб (OCSP Client, TSP
Client). Если параметры прокси в групповых политиках не настроены, будут использоваться настройки прокси Microsoft Internet Explorer".

Спрашивает - можно ли задать в эту структуру NULL?
А я не знаю, каким боком привязать эту структуру к моему коду подписи.
Пожалуйста, подскажите как здесь быть.
Очень жду от Вас помощи и заранее благодарен.
Offline Андрей *  
#2 Оставлено : 11 мая 2021 г. 14:28:00(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 495 раз
Поблагодарили: 2035 раз в 1579 постах
Здравствуйте.

1. Это не CAPICOM, а CAdESCOM
2. CADES_PROXY_PARA не доступен через COM, структура по-умолчанию не заполнена => решать с доступом групповыми политиками или настройки через IE

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Андрей Карклин оставлено 11.05.2021(UTC)
Offline Андрей *  
#3 Оставлено : 11 мая 2021 г. 16:10:26(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 495 раз
Поблагодарили: 2035 раз в 1579 постах
+ зачем CADESCOM_CADES_BES делаете? Если можно сразу CADESCOM_CADES_X_LONG_TYPE_1...
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#4 Оставлено : 11 мая 2021 г. 16:12:34(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 495 раз
Поблагодарили: 2035 раз в 1579 постах


Метод ICPSignedData2::SignCades
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Карклин  
#5 Оставлено : 11 мая 2021 г. 16:54:10(UTC)
Андрей Карклин

Статус: Новичок

Группы: Участники
Зарегистрирован: 08.08.2020(UTC)
Сообщений: 9
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 1 раз
Ясно! Спасибо большое, Андрей! Поправлю!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.