我一直试图在客户端上获取自定义客户端扩展,但我不知道如何发布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)
现在客户端在每个客户端问候语中添加一个扩展名,但服务器如何正确获取自定义添加的扩展名?
答案 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
回拨标记上下文(或其他数据结构),以指示此连接使用自定义扩展程序。