如何在 C 或 C++ 中的 OpenSSL 上实现服务器名称指示(SNI)?
有没有可用的真实世界示例?
在客户端,您SSL_set_tlsext_host_name(ssl, servername)
在启动 SSL 连接之前使用。
在服务器端,它有点复杂:
SSL_CTX()
;SSL_CTX()
为每个使用添加服务器名称回调SSL_CTX_set_tlsext_servername_callback()
;SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name)
。找出SSL_CTX
使用该主机名的权利,然后将SSL
对象切换SSL_CTX
为SSL_set_SSL_CTX()
.OpenSSL 源代码分发目录中的s_client.c
和s_server.c
文件apps/
实现了此功能,因此它们是了解如何完成此功能的好资源。