簡體   English   中英

C/C++:我們何時以及為什么需要在 TLS 客戶端-服務器應用程序中調用 SSL_do_handshake()?

[英]C/C++: When and why do we need to call SSL_do_handshake() in a TLS client-server application?

我創建了一個使用 TLS 相互通信的客戶端-服務器應用程序。 我使用了非阻塞 sockets 並使用通用 OpenSSL 庫函數來建立 TLS 通道和 IO 操作,即沒有在我的應用程序的任何地方顯式使用 BIO。 應用程序正常工作,無需調用 SSL_do_handshake() 方法。

我對 OpenSSL 相當陌生,最近在瀏覽文檔時遇到了 SSL__do_handshake() 方法。 我了解 SSL_do_handshake() 方法執行的操作。 但是,不清楚在什么情況下我需要調用它......

據我了解,SSL_accept() 是第一次啟動 TLS 握手。 並在必要時在內部調用 SSL_read() 和 SSL_write() 重新協商 TLS 握手。

如果我上面的陳述是正確的,那么,為什么我們需要顯式調用 SSL_do_handshake() 方法呢?

當應該完成 TLS 握手時,需要調用SSL_do_handshake 當使用SSL_accept (服務器)或SSL_connect (客戶端)時,不需要顯式調用SSL_do_handshake ,因為它已經在內部完成。 如果應該使用SSL_do_handshake類似,則無需使用SSL_acceptSSL_connect ,只需相應地設置 SSL state (即客戶端或服務器端)。

換句話說:它只是一個稍微不同的 API,控制級別略有不同。 一個人可以使用它,但一個人不需要使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM