在握手流程中,openssl 提供了几个回调函数接口让我们介入,最主要的接口有这么几个:
client_hello_cb、get_session_cb、servername_cb、cert_cb。
client_hello_cb 是收到 ClientHello 消息后执行的第一个回调,然后选择协议版本和选择密钥套件,接着调用 get_session_cb 来获取缓存的 Session,在这个阶段我们可以做分布式缓存的获取,解决分布式环境中Session ID复用率低的问题。

openssl 解析完SNI后调用 servername_cb,这个回调主要用来切换 server 块配置和 SSL_CTX,实现多个 server 块不同 SSL 配置的问题,但可以看出协议版本和密钥套件早已经选择好了,在这个阶段做 SSL_CTX 切换对这两个配置并没有作用。

最后调用 cert_cb 来切换证书,在这个阶段可以用 lua 介入,实现证书的热加载。

要想实现协议版本和密钥套件域名定制的话,必须要在 client_hello_cb 这个阶段进行切换,但是 client_hello_cb 这个回调是新版 openssl 才支持。

client_hello_cb、get_session_cb、servername_cb、cert_cb相关推荐

  1. etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程

    1. etcd 项目结构和功能 etcd 项目代码的目录结构如下: $ tree ├── auth ├── build ├── client ├── clientv3 ├── contrib ├── ...

  2. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  3. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练

    计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: • 增加了大量骨干网络的支持,增强 ...

  4. 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet

    对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...

  5. Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现

    基本功能点 功能点框图 功能点说明 1.Authentication:身份认证/登录,验证用户是不是拥有相应的身份: 2.Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个 ...

  6. PyTorch 笔记(16)— torch.nn.Sequential、torch.nn.Linear、torch.nn.RelU

    PyTorch 中的 torch.nn 包提供了很多与实现神经网络中的具体功能相关的类,这些类涵盖了深度神经网络模型在搭建和参数优化过程中的常用内容,比如神经网络中的卷积层.池化层.全连接层这类层次构 ...

  7. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理

    卷积神经网络(Convolutional Neural Network,CNN)CNN 被用于图像识别.语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础. 1. 全连 ...

  8. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)

    1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...

  9. Go 学习笔记(32)— 类型系统(命名类型、未命名类型、底层类型、类型强制转换、类型别名和新声明类型)

    1. 命名类型和未命名类型 1.1 命名类型 类型可以通过标识符来表示,这种类型称为命名类型( Named Type ). Go 语言的基本类型中有 20 个预声明简单类型都是命名类型, Go 语言还 ...

最新文章

  1. 如何在 5 分钟内建立一个数据驱动的新型冠状病毒肺炎应用程序
  2. springboot+druid+mybatis-Plus 配置详解
  3. elasticsearch解决控制台中文乱码问题
  4. poj-1031-fence(不是我写的,我只是想看着方便)
  5. python基础教程第4版-Python基础教程(第3版) 笔记(四)
  6. [ASP.net]TreeView(1)(一次性递归所有节点)
  7. 纯前端CSS实现动态太极阴阳鱼效果
  8. 关于IDEA代码的整理以及函数
  9. MYSQL 时间处理
  10. java中字符串的算法_Java中的字符串搜索算法
  11. R-CNN家族梳理:从R-CNN到Mask R-CNN
  12. python消息队列celery_python—Celery异步分布式
  13. 中国冷凝管行业市场供需与战略研究报告
  14. 简述数学建模的过程_数学建模研究过程指导(精编版) Part IV
  15. Centos中yum方式安装java
  16. pdf嵌入字体(不用adobe pdf打印机)
  17. 分布式架构的演变过程之单体架构
  18. 大数据技术之Hadoop(HDFS)第2章 HFDS的Shell操作
  19. Element UI 组件库分析和二次开发(一)
  20. 【C语言编程】求Fibonacci(斐波那契)数列前40个数

热门文章

  1. python中关于命名的例子_Python()-类命名空间和对象/实例命名空间
  2. MTK:架构和消息机制(必看)
  3. linux keepalived 脚本,Linux下安装Keepalived及原理分析
  4. Tomcat控制台乱码
  5. 九九乘法表(Java)
  6. three.js 笑脸雨
  7. visionpro 窗口显示文字
  8. 微信小程序在组件中关闭小程序
  9. mantis config_inc.php g_source,CentOS7下Mantis安装与配置
  10. (一)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - 平台导语简介