OpenSSL: продвигайте небезопасную BIO для обеспечения безопасности

Я пытаюсь создать простую реализацию клиента FTP / FTPS в C ++, используя OpenSSL. Мне удалось работать с обычным FTP с использованием BIO API. Теперь возникает вопрос: если у меня небезопасное соединение и объект BIO, как я могу обновить соединение, чтобы использовать шифрование? Соединение работает на обычном FTP до AUTH TLS Команда отправлена, и в этот момент сеанс TLS / SSL должен быть согласован. Здесь BIO_new_ssl_connect функция, но AFAIK, вместо того, чтобы повторно использовать существующее соединение, оно создает новое соединение.

Я следую этому уроку: https://www.ibm.com/developerworks/linux/library/l-openssl/index.html

1

Решение

Проверьте BIO_new_ssl_connect исходный код:

BIO *BIO_new_ssl_connect(SSL_CTX *ctx)
{
#ifndef OPENSSL_NO_SOCK
BIO *ret = NULL, *con = NULL, *ssl = NULL;

if ((con = BIO_new(BIO_s_connect())) == NULL)
return (NULL);
if ((ssl = BIO_new_ssl(ctx, 1)) == NULL)
goto err;
if ((ret = BIO_push(ssl, con)) == NULL)
goto err;
return (ret);
err:
BIO_free(con);
#endif
return (NULL);
}

И сделайте то же самое, просто пропустите BIO_s_connect,

0

Другие решения

Других решений пока нет …