【问题标题】:OpenSSL: Promote insecure BIO to secure oneOpenSSL:将不安全的 BIO 推广到安全的 BIO
【发布时间】:2018-03-06 13:41:04
【问题描述】:

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

我正在关注本教程:https://www.ibm.com/developerworks/linux/library/l-openssl/index.html

【问题讨论】:

    标签: c++ ssl ftp openssl ftps


    【解决方案1】:

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

    【讨论】:

    • 使用这个建议,我能够让它工作。谢谢!
    猜你喜欢
    • 2019-03-26
    • 2021-02-03
    • 1970-01-01
    • 2015-10-20
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多