Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SSL client-hello сообщение, WinSock , SSL вручную без сторонних либ 
:(
    Опции темы
magesi
  Дата 5.6.2012, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



Привет всем!

У меня проблема с формированием "Client-Hello" сообщения, которое должно передаваться по SSL от клиента на сервер для дальнейшего получения публичного сертификата.

Судя , по документации:

http://technet.microsoft.com/en-us/library...1(v=ws.10).aspx

"Client-Hello" сообщение должно состоять из:

Код

ClientVersion 3,1
ClientRandom[32]
SessionID: None (new session)
Suggested Cipher Suites:
   TLS_RSA_WITH_3DES_EDE_CBC_SHA
   TLS_RSA_WITH_DES_CBC_SHA
Suggested Compression Algorithm: NONE


В коде составлен такой запрос с \r\n по аналогу выше.

Код

char *request = "ClientVersion 3,1\r\nClientRandom[32]\r\n
SessionID: None (new session)\r\n
Suggested Cipher Suites:\r\n
TLS_RSA_WITH_3DES_EDE_CBC_SHA\r\n
TLS_RSA_WITH_DES_CBC_SHA\r\n
Suggested Compression Algorithm: NONE\r\n";


Пока с SSL вручную не возился, поэтому даже проблема с телом 1-ого сообщения...

При recv() после отправке сообщения выше, в result - "0", и ни какой ответ от сервера я не получаю. 

В HTTP протоколе в одном месте, где разделяются данные и тело сообщения идут два \r\n подряд, тут не может быть такого же?

Готовые либы, аля OpenSSL не предлогать. Смысл действий - понять принцип работы с SSL/TLS на практике, на более простом и нагялдном примере, четко по шагам, а не в большом и готовом проекте, где исходный код заточен не для понимания, а для использования оного.

Заранее спасибо!

Это сообщение отредактировал(а) magesi - 5.6.2012, 05:55
PM MAIL   Вверх
xvr
Дата 5.6.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Протоколы рекомендуется реализовывать смотря в оригинал спецификации ( http://tools.ietf.org/html/rfc6101 ), а не в MS пересказы. Судя по этому оригиналу Client-Hello имеет бинарный, а не текствый формат (равно как и все остальное)

Добавлено через 11 минут и 17 секунд
И еще - http://tools.ietf.org/html/rfc5246

PM MAIL   Вверх
Amp
Дата 5.6.2012, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



Это в продожении темы про OAuth? )
PM MAIL   Вверх
feodorv
Дата 5.6.2012, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(magesi @  5.6.2012,  06:50 Найти цитируемый пост)
TLS_RSA_WITH_3DES_EDE_CBC_SHA\r\n
TLS_RSA_WITH_DES_CBC_SHA\r\n

Отсутствуют пробелы в начале строк. Сервер воспринимает эти директивы как заголовки.

Цитата(magesi @  5.6.2012,  06:50 Найти цитируемый пост)
В HTTP протоколе в одном месте, где разделяются данные и тело сообщения идут два \r\n подряд, тут не может быть такого же?

Честно говоря, ответа на этот вопрос я не знаю. Но ничто не мешает в конец запроса добавить дополнительные "\r\n" и посмотреть, что будет...
Не удивлюсь, если Suggested Cipher Suites должны разделяться просто "\r" или просто "\n"...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
magesi
Дата 6.6.2012, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



Цитата(feodorv @ 5.6.2012,  20:17)
Цитата(magesi @  5.6.2012,  06:50 Найти цитируемый пост)
TLS_RSA_WITH_3DES_EDE_CBC_SHA\r\n
TLS_RSA_WITH_DES_CBC_SHA\r\n

Отсутствуют пробелы в начале строк. Сервер воспринимает эти директивы как заголовки.

Цитата(magesi @  5.6.2012,  06:50 Найти цитируемый пост)
В HTTP протоколе в одном месте, где разделяются данные и тело сообщения идут два \r\n подряд, тут не может быть такого же?

Честно говоря, ответа на этот вопрос я не знаю. Но ничто не мешает в конец запроса добавить дополнительные "\r\n" и посмотреть, что будет...
Не удивлюсь, если Suggested Cipher Suites должны разделяться просто "\r" или просто "\n"...

Нет, по RFC все проще оказалось. Там вообще нет ни каких \r\n.

Банально нужно сделать структуру пакета, сделать бинарную сериализацию и отослать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.