Я пытаюсь создать простую реализацию клиента 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
Проверьте 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
,
Других решений пока нет …