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 相互通信的客户端-服务器应用程序。我已经使用非阻塞套接字并使用通用 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() 方法?
SSL_do_handshake
需要在应该完成 TLS 握手时调用。当使用 SSL_accept
(服务器)或 SSL_connect
(客户端)时,不需要显式调用 SSL_do_handshake
,因为它已经在内部完成。类似的,如果应该使用 SSL_do_handshake
,则不需要使用 SSL_accept
或 SSL_connect
,只需相应地设置 SSL 状态(即客户端或服务器端)。
换句话说:它只是略有不同API,控制水平略有不同。一个可以用一个不用。
我创建了一个使用 TLS 相互通信的客户端-服务器应用程序。我已经使用非阻塞套接字并使用通用 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() 方法?
SSL_do_handshake
需要在应该完成 TLS 握手时调用。当使用 SSL_accept
(服务器)或 SSL_connect
(客户端)时,不需要显式调用 SSL_do_handshake
,因为它已经在内部完成。类似的,如果应该使用 SSL_do_handshake
,则不需要使用 SSL_accept
或 SSL_connect
,只需相应地设置 SSL 状态(即客户端或服务器端)。
换句话说:它只是略有不同API,控制水平略有不同。一个可以用一个不用。