2013-04-25 28 views
2

我需要一些關於OpenSSL,TLS套接字的信息。首先,我想通過TCP通過TLS與服務器建立連接。 通常首先創建一個TCP套接字,然後使用TCP套接字連接到服務器,然後將TCP套接字轉換(在通過TCP套接字發送或接收任何數據之前)到TLS中。使用OpenSSL將現有的TCP套接字轉換爲TLS

我的問題是可以按照以下方式嗎?

  1. 創建TCP套接字。
  2. 使用TCP套接字連接服務器。
  3. 通過TCP套接字發送和接收一些數據。
  4. 然後將TCP套接字轉換爲TLS。

    注意:我正在使用OpenSSL。

回答

1

假設服務器必須支持它,給定的方式似乎是可能的。請參閱SMTP。它以這種方式適用於SMTP服務器,其中最初的幾個會話是在純TCP中,然後是在SSL/TLS上。您可以使用BIO_new_socket將現有套接字綁定到BIO,然後使用SSL_set_bio將此套接字設置爲SSL *結構。

您可以找到很多SSL客戶端的例子。

+0

我正在使用OpenSSl API進行上述轉換pSslSocket = new SslSocket; pSslSocket-> connect(iTcpSocket); pSslSocket-> finishNegotiation(10 * 1000); – 2013-04-25 04:00:24

+0

OpenSSL是基於C的庫。它看起來不像OpenSSL代碼。 SslSocket是OpenSSL的封裝嗎? – doptimusprime 2013-04-25 04:09:36

+0

是SslSocket是OpenSSL的封裝類。 (...) – 2013-04-25 04:15:56