Linux: Openssl使用

文章目录

  • 多线程
  • Server
    • 建立 SSL_CTX
    • 设置context 工作模式
    • 根据accept的 socket fd
    • 处理handshake消息
    • 获取错误信息 根据 上面的 err
    • 查询错误信息;
  • 错误:
  • tls
    • client hello
  • 证书

多线程

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,

你可能感兴趣的:(网络,安全,openssl)