SSL_connect / чтение из "пустого" BIO - PullRequest
0 голосов
/ 24 июня 2010

У меня проблема с установлением связи между нижележащим сокетом (в данном случае туннельным каналом (lib) ssh2) и BIO для установления связи.

Причина всех проблем: сервер, с которым я хочу получить рукопожатие, изначально не является сервером, зашифрованным по протоколу SSL, и ему нужно указать включить SSL перед тем, как использовать SSL_connect () / handshakingВ частности, это FTP-сервер с расширением SSL.

Я предоставляю свой код (с помощью caf) ниже.

Сначала настроен туннельный канал, на котором начальный запрос на SSLшифрование отправлено («AUTH SSL» в текстовом виде).Трудности возникают, когда я пытаюсь договориться о рукопожатии, потому что, на мой взгляд, нет данных для рукопожатия.

Код: http://pastebin.com/TG8RMyWx

Каким-то образом может показаться, что мне нужнопередавать данные между каналом и BIO "во время" рукопожатия, но я не вижу, как?

Я смог установить соединение SSL с внешним туннелем SSH (просто запустил пользователя sSS -f из OpenSSH ssh -f).@host -L 21: remote_host: 21 -N) только с одним BIO (в качестве сокета для localhost), поэтому я предполагаю, что мои проблемы в переноске, как указано в предыдущем абзаце.

Любые подсказкис благодарностью, спасибо!

  • Джеймс

1 Ответ

0 голосов
/ 25 июня 2010

Теперь я вижу две вещи:

  • Ваши BIO не инициализированы должным образом. Используйте BIO_new_bio_pair(&rbio, 0, &wbio, 0); вместо вашего BIO_make_bio_pair() вызова;

  • Как только вы это исправите, SSL_connect() вернет SSL_ERROR_WANT_READ / SSL_ERROR_WANT_WRITE - вам нужно будет поместить его в цикл, например SSL_read().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...