OpenSSL:促使不安全的BIO保护它

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenSSL:促使不安全的BIO保护它相关的知识,希望对你有一定的参考价值。

我正在尝试使用OpenSSL在C ++中创建一个简单的FTP / FTPS客户端实现。我已经设法使用BIO API使用普通FTP。现在的问题是:一旦我有一个不安全的连接和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 source code

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

以上是关于OpenSSL:促使不安全的BIO保护它的主要内容,如果未能解决你的问题,请参考以下文章

使用openssl BIO逐块进行base64解码

使用OpenSSL进行Base64编码和解码

为 openssl EVP_PKEY 私钥清理内存的 C 代码

OpenSSL 解密失败但错误代码为 0

openssl之BIO系列之24---SSL类型的BIO

openssl之BIO系列之9---BIO对的创建和应用