【问题标题】:Convert existing TCP socket into TLS using OpenSSL使用 OpenSSL 将现有 TCP 套接字转换为 TLS
【发布时间】:2013-04-18 19:40:54
【问题描述】:

我需要一些关于 OpenSSL、TLS 套接字的信息。首先,我想通过 TCP 上的 TLS 与服务器建立连接。 一般先创建一个 TCP 套接字,然后使用 TCP 套接字连接到服务器,然后将 TCP 套接字(在通过 TCP 套接字发送或接收任何数据之前)转换为 TLS。

我的问题是可以按照以下方式吗?

  1. 创建 TCP 套接字。

  2. 使用 TCP 套接字连接服务器。

  3. 通过 TCP 套接字发送和接收一些数据。

  4. 然后将 TCP 套接字转换为 TLS。

    注意:我使用的是 OpenSSL。

【问题讨论】:

    标签: c++ ssl tcp openssl


    【解决方案1】:

    如果服务器必须支持它,它似乎可以通过给定的方式。请参阅 SMTP。对于 SMTP 服务器,它以这种方式工作,其中前几个对话是在纯 TCP 中,然后是在 SSL/TLS 上。您可以使用 BIO_new_socket 将现有套接字绑定到 BIO,然后使用 SSL_set_bio 将此套接字设置为 SSL * 结构。

    您可以找到许多 SSL 客户端示例。

    【讨论】:

    • 我是用OpenSSl API把上面的转换成pSslSocket = new SslSocket; pSslSocket->连接(iTcpSocket); pSslSocket->finishNegotiation(10 * 1000);
    • OpenSSL 是基于 C 的库。它看起来不像 OpenSSL 代码。 SslSocket 是 OpenSSL 的包装器吗?
    • 是的,SslSocket 是 OpenSSL 的包装类。
    • 在连接方法中我正在做这个 BIO* sbio = BIO_new_socket(...) SSL_set_bio(...) SSL_set_connect_state(..); SSL_connect(..)
    • 是的,您可能想做一些事情,比如发出 STARTTLS 通知:en.wikipedia.org/wiki/STARTTLS
    猜你喜欢
    • 2016-05-14
    • 2021-10-26
    • 1970-01-01
    • 2021-10-06
    • 2023-03-08
    • 2014-01-15
    • 2013-04-13
    • 2017-01-11
    • 2016-06-13
    相关资源
    最近更新 更多