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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline dosik  
#1 Оставлено : 23 сентября 2019 г. 8:12:49(UTC)
dosik

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Собираю libcurl под Windows (WinSSL a не OpenSSL), тестирую его в консольном приложении C++, успешно соединяюсь с https://testgost2012.cryptopro.ru/.
Засовываю тот-же самый код в node addons и при попытке соединения получаю: "InitializeSecurityContext failed: SEC_E_INTERNAL_ERROR (0x80090304) - Не удается установить связь с локальной системой безопасности". При этом RSA шифрование в node addons работает.
В чем может быть причина?

Отредактировано пользователем 23 сентября 2019 г. 13:51:36(UTC)  | Причина: Не указана

Offline Aleksandr G*  
#2 Оставлено : 23 сентября 2019 г. 9:27:59(UTC)
Aleksandr G*

Статус: Активный участник

Группы: Участники
Зарегистрирован: 13.09.2016(UTC)
Сообщений: 126

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 35 раз в 28 постах
Попробуйте перед сборкой libcurl внести правку в файл schannel.c:

Код:
static CURLcode
schannel_connect_step1(struct connectdata *conn, int sockindex)
......
sspi_status = s_pSecFn->InitializeSecurityContext(
    &BACKEND->cred->cred_handle, NULL, host_name, BACKEND->req_flags, 0, 0,
    ( NULL), // было (BACKEND->use_alpn ? &inbuf_desc : NULL),
    0, &BACKEND->ctxt->ctxt_handle,
    &outbuf_desc, &BACKEND->ret_flags, &BACKEND->ctxt->time_stamp);



Согласно документации параметр должен быть NULL:
Цитата:
pInput
[in] указатель на структуру SecBufferDesc World Wide Web link. При первом вызове должен быть NULL. При последующих вызовах должен состоять из двух структур SecBuffer



Это помогло при работе с библиотекой node-libcurl.

thanks 1 пользователь поблагодарил Aleksandr G* за этот пост.
dosik оставлено 23.09.2019(UTC)
Offline dosik  
#3 Оставлено : 23 сентября 2019 г. 11:38:01(UTC)
dosik

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Автор: Aleksandr G* Перейти к цитате
Попробуйте перед сборкой libcurl внести правку в файл schannel.c:

Помогло, спасибо.
Вроде как и по документации Microsoft первый вызов должен быть NULL.
И все же пока осталось непонятным, чем же там делает среда node, почему нативное приложение Windows работало "из коробки"?

P.S.
Не пробовали pull request в Curl? Или там болото и не расшатаешь?
Offline Aleksandr G*  
#4 Оставлено : 23 сентября 2019 г. 12:13:20(UTC)
Aleksandr G*

Статус: Активный участник

Группы: Участники
Зарегистрирован: 13.09.2016(UTC)
Сообщений: 126

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 35 раз в 28 постах
PR не пробовал. Эта тема уже обсуждалась например тут. Да и про документацию schannel они в курсе (Obviously this isn't 100% correct, given that the ALPN buffer is meant to be passed in here, but perhaps this documentation hasn't been updated post-ALPN implementation).

Если будете кидать PR укажите ссылку, подпишусь на обсуждение
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.