Openssl SSL“连接/读取自”;“空的”;生物

Openssl SSL“连接/读取自”;“空的”;生物,openssl,ssl-certificate,Openssl,Ssl Certificate,为了进行握手,我在建立底层套接字(在本例中为(lib)ssh2隧道通道)和BIO之间的链接时遇到问题 出现所有问题的原因是:我希望与之握手的服务器最初不是SSL加密的服务器,必须在SSL_connect()初始化/握手之前被告知打开SSL。具体来说,它是一个带有SSL扩展的FTP服务器 我在下面提供我的代码(在caf的帮助下) 首先,设置一个隧道通道,在该通道上发送SSL加密的初始请求(明文形式的“AUTH SSL”)。当我尝试协商握手时会遇到困难,因为在我看来,没有数据可以用来握手 代码:

为了进行握手,我在建立底层套接字(在本例中为(lib)ssh2隧道通道)和BIO之间的链接时遇到问题

出现所有问题的原因是:我希望与之握手的服务器最初不是SSL加密的服务器,必须在SSL_connect()初始化/握手之前被告知打开SSL。具体来说,它是一个带有SSL扩展的FTP服务器

我在下面提供我的代码(在caf的帮助下)

首先,设置一个隧道通道,在该通道上发送SSL加密的初始请求(明文形式的“AUTH SSL”)。当我尝试协商握手时会遇到困难,因为在我看来,没有数据可以用来握手

代码:

不知何故,在握手过程中,我似乎需要在通道和BIO之间传输数据,但我不知道如何传输

我已经能够设置到外部SSH隧道的SSL连接(只需运行OpenSSH的SSH-f)user@host-l21:remote_host:21-N),只有一个BIO(作为本地主机的套接字),所以我猜我的问题在于上一段中所述的携带

非常感谢您的任何提示,谢谢

  • 詹姆斯

    • 我现在可以看到两件事:

      • 您的BIOs没有正确初始化。使用
        BIO\u新的BIO\u对(&rbio,0,&wbio,0)
        而不是您的
        BIO\u make\u BIO\u pair()
        调用

      • 一旦您修复了这个问题,那么
        SSL\u connect()
        将返回
        SSL\u ERROR\u WANT\u READ
        /
        SSL\u ERROR\u WANT\u WRITE
        ——然后需要将它放入一个循环中,就像
        SSL\u READ()
        一样


      这就解决了问题。我真不知道该怎么感谢你,咖啡馆:)谢谢你对我的耐心,谢谢你对我的巨大帮助!