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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rav1610  
#1 Оставлено : 1 сентября 2020 г. 10:02:08(UTC)
rav1610

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

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

Сказал(а) «Спасибо»: 4 раз
Столкнулся с ситуацией при работе на изолированном от интернет компьютере, работающем через прокси сервер.

Выполняю подписание данных усовершенствованной ЭЦП, формат подписи X Long Type 1.
Использую функцию "CadesMsgEnhanceSignature" (кроме всего прочего) из библиотеки cades.dll в составе КриптоПро ЭЦП SDK версия 2.00.13981 для Windows (последняя доступная мне версия).
Помимо cased используются TSP и OCSP клиенты.

Все требования по настройкам и использованию библиотек выполнены.
В целом, все работает нормально, данные подписываются и эта усовершенствованная подпись верифицируются.
За одним исключением, связанным с параметрами прокси сервера и спецификой сертификатов.

В цепочке удостоверяющих сертификатов (путь сертификации) есть один сертификат, изданный УЦ, не поддерживающим сервис OCSP.
Для этого сертификата выполняется (библиотекой cades) загрузка списка отозванных сертификатов, но происходит это "мимо" указанного прокси сервера, что в итоге, приводит к ошибке 0xC2110121.

Прошу помочь разобраться:
Это ошибка в текущей версии библиотеки cases, которая будет в будущем исправлена?
Так задумано разработчиками и в дальнейшем ничего меняться не будет?
Или я что-то не так делаю и есть возможность обойти эту ситуацию программным путем?

Далее, подробнее.
Windows 10 Версия 2004 (сборка 19041.450)
КриптоПро CSP 4.0.9958
КриптоПро ЭЦП SDK 2.00.13981
КриптоПро TSP Client 2.0 (сборка )
КриптоПро OCSP Client 2.0 (сборка )

По коду программы, данные подписываются простой ЭЦП, затем выполняется усовершенствование подписи.
Вызывается функция
CadesMsgEnhanceSignature(hCryptMsg, dwSignatureIndex, &signPara)
структура signPara заполняется всеми необходимыми данными
typedef struct _CADES_SIGN_PARA {
DWORD dwSize;
DWORD dwCadesType;
PCCERT_CONTEXT pSignerCert;
LPCSTR szHashAlgorithm;
HCERTSTORE hAdditionalStore;
PCADES_SERVICE_CONNECTION_PARA pTspConnectionPara;
PCADES_PROXY_PARA pProxyPara;
LPVOID pCadesExtraPara;
DWORD cAdditionalOCSPServices;
LPCWSTR *rgAdditionalOCSPServices;
} CADES_SIGN_PARA, *PCADES_SIGN_PARA;

в том числе:
заполняется pTspConnectionPara одресов TSP сервиса;
заполняются rgAdditionalOCSPServices и cAdditionalOCSPServices списком адресов OSCP сервисов (на случай, если этих адресов нет в сертификатах);
заполняется pProxyPara адресом прокси сервера и данными аутентификации на нем.

По журналам прокси сервера (описанному в pProxyPara) вижу запросы к сервисам TSP и OCSP
PROXY.3128 00004 - 192.168.200.40:50476 0.0.0.0:0 0 0 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50477 178.238.112.83:80 303 3926 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50478 0.0.0.0:0 0 0 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50479 46.17.202.70:80 384 3173 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50480 0.0.0.0:0 0 0 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50481 46.17.202.70:80 384 3173 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
Но функция возвращает ошибку 0xC2110121 (The URL of OCSP service is not specified)

Далее, в windows настройках прописываю адрес proxy сервера (прокси для IE).
По журналам прокси сервера вижу следующее
PROXY.3128 00004 - 192.168.200.40:50485 0.0.0.0:0 0 0 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50486 178.238.112.83:80 303 3926 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50487 0.0.0.0:0 0 0 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50488 46.17.202.70:80 384 3173 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50490 0.0.0.0:0 0 0 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50491 46.17.202.70:80 384 3173 0 POST_http://pki.sertum-pro.ru/ocspq2012/ocsp.srf_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50492 0.0.0.0:0 0 0 0 GET_http://reestr-pki.ru/cdp/guc_gost12.crl_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50493 185.194.32.242:80 236 1944 0 GET_http://reestr-pki.ru/cdp/guc_gost12.crl_HTTP/1.1
PROXY.3128 00004 - 192.168.200.40:50494 0.0.0.0:0 0 0 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
PROXY.3128 00000 ricky 192.168.200.40:50495 178.238.112.83:80 303 3926 0 POST_http://www.cryptopro.ru/tsp/tsp.srf_HTTP/1.1
Функция cades выполняет еще один запрос, загружает список отозванных сертификатов "http://reestr-pki.ru/cdp/guc_gost12.crl".

Получается, что для доступа к TSP и OCSP сервисам, функция "CadesMsgEnhanceSignature" использует адрес прокси сервера, переданный в параметрах.
А для загрузки списков отозванных сертификатов она "игнорирует" данные, переданные в параметрах и использует глобальные настройки windows (прокси из IE).

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

Но какая в этом логика, совершенно не понятно.
Если настройки прокси заданы глобально (прокси IE), то нет никакого смысла передавать эти данные в параметрах функции.
Если не использовать глобальные настройки (в том числе групповые политики), а передавать данные прокси сервера только в параметрах функции, то она не работает (по указанной выше причине).

Аналогичным образом ведут себя и другие функции (CadesSignHash, CadesMsgAddEnhancedSignature).

По логике, я ожидал, что если передаю в функцию адрес прокси сервера явным образом, то все внешние запросы этой функцией делаются через указанный прокси. Тем более, что в структурах данных, нет явной привязки данных прокси к данным сервисов TSP и OCSP (как это сделано в групповых политиках).

Возможно, я что то упускаю из виду и есть другой способ передать данные прокси сервера в функцию для CRL запросов?

Это не праздный вопрос из любопытства.
С данной ситуацией мы столкнулись у клиента (крупная Российская компания) в которой не допускается использование настроек типа "прокси IE" внутренней службой безопасности.
Поэтому есть требование, передавать все необходимые данные в функции, только через параметры и не использовать глобальные настройки.

Offline Анатолий Беляев  
#2 Оставлено : 3 сентября 2020 г. 11:15:56(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Для настройки прокси использующейся в cryptoapi можно воспользоваться вот этой инструкцией.
https://mssec.wordpress....sing-a-web-proxy-server/
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
rav1610 оставлено 03.09.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.