client_hello_cb、get_session_cb、servername_cb、cert_cb

在握手流程中,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 才支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值