文章目录
多线程
https://www.openssl.org/blog/blog/2017/02/21/threads/
https://openssl-users.openssl.narkive.com/j3fqgvte/confusion-about-ssl-error-want-read-write
综上所述,SSL_read/write 的含义和正常普通socket上的含义不一样。不是原子操作。
在SSL_read的函数里可能调用到socket的write函数,或者在SSL_write函数里调用到socket的read 函数。如果是多线程共享SSL对象时可能出现各种异常的行为。
需要详细读取openssl的具体函数。
Server
建立 SSL_CTX
SSL_CTX *ctx_ptr = SSL_CTX_new(SSLv23_method()); // 这里SSLv23_method() 是通用的方法集,TLS1.2/1.3 都可以
设置context 工作模式
SSL_CTX_set_options(ctx_ptr,
//设置不支持重连
SSL_CTX_set_session_cache_mode(ctx_ptr, SSL_SESS_CACHE_OFF);
SSL_CTX_set_options(ctx_ptr, SSL_OP_NO_TICKET | SSL_OP_NO_SESSION_