代码之家  ›  专栏  ›  技术社区  ›  eko

OpenSSL:将不安全的BIO升级为安全的BIO

  •  1
  • eko  · 技术社区  · 7 年前

    我正在尝试使用OpenSSL在C++中创建一个简单的FTP/FTPS客户端实现。我使用BIO API管理它与普通FTP一起工作。现在的问题是:一旦我有了一个不安全的连接和BIO对象,如何升级连接以使用加密?连接在普通FTP中工作,直到 AUTH TLS 命令已发送,此时应协商TLS/SSL会话。这里有 BIO_new_ssl_connect 函数,但实际上,它不是重用现有连接,而是创建一个新连接。

    我将学习本教程: https://www.ibm.com/developerworks/linux/library/l-openssl/index.html

    1 回复  |  直到 7 年前
        1
  •  0
  •   Martin Prikryl    7 年前

    检查 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