获取客户

时间:2017-11-20 08:14:47

标签: c https openssl handshake

我一直试图在客户端上获取自定义客户端扩展,但我不知道如何发布get_custom_ext或类似的方法。

首先,我们在客户端添加扩展名为SSL_CTX_set_custom_cli_ext

int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                                          custom_ext_add_cb add_cb,
                                          custom_ext_free_cb free_cb, void *add_arg,
                                          custom_ext_parse_cb parse_cb,
                                          void *parse_arg)

现在客户端在每个客户端问候语中添加一个扩展名,但服务器如何正确获取自定义添加的扩展名?

1 个答案:

答案 0 :(得分:0)

看起来你可以在服务器上注册相同的自定义扩展,并使用是否调用add_cb回调来检测客户端是否提出扩展。

  

对于每个注册的ServerHello和EncryptedExtension消息   当且仅当指定的要求时,才会调用add_cb一次   满足上下文并且收到相应的扩展名   的ClientHello 即可。也就是说,如果没有收到相应的延期   ClientHello然后add_cb将不会被调用。   (https://www.openssl.org/docs/manmaster/man3/SSL_CTX_add_server_custom_ext.html#EXTENSION-CALLBACKS

即,做相应的

int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                                  custom_ext_add_cb add_cb,
                                  custom_ext_free_cb free_cb, void *add_arg,
                                  custom_ext_parse_cb parse_cb,
                                  void *parse_arg);

并让您的add_cb回拨标记上下文(或其他数据结构),以指示此连接使用自定义扩展程序。