读取或写入 boost::asio::ssl::stream::next_layer() 是否会绕过 SSL decryption/encryption?

Does reading from or writing to boost::asio::ssl::stream::next_layer() bypass SSL decryption/encryption?

boost::asio 库通过在 boost::asio::ssl::stream 装饰器 class 模板中包装套接字对象来支持套接字上的 SSL 加密流量。例如:

boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sslSocket;

ssl::stream 不支持 tcp::socket 的某些操作。调用 ssl::stream::next_layer 方法 returns 对包装对象的引用,这种方式不受 ssl::stream 操作支持,可以直接在包装对象上执行。

然而,直接对包装的套接字对象执行读写操作绕过 SSL 解密和加密对我来说似乎合乎逻辑,并且为了正确的 SSL 行为,sslSocket 上的读取和写入必须直接在包装上执行 ssl::stream对象。

这样对吗,我可以自由的对wrapped object进行读写操作了?

使用底层套接字不仅可以绕过加密,还可以绕过所有协议。包括握手、(重新)协商、边信道、保活等

根本无法保证它会正常工作。唯一可以预期工作的是在首次初始化任何 SSL 操作之前使用底层套接字时。

除此之外,这就像将随机数据写入由 openssl 管理的套接字的文件描述符。