NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::sni_manager类 参考

SNI (Server Name Indication) 证书管理器 更多...

#include <sni_manager.hpp>

Public 成员函数

void add_host (const string &hostname, ssl_context ctx)
 添加域名及其SSL上下文
void remove_host (const string &hostname)
 移除域名
void set_default_context (ssl_context ctx)
 设置默认SSL上下文(SNI未匹配时使用)
void * select_ssl_ctx (const string &server_name) const
 根据SNI hostname选择SSL_CTX
bool has_host (const string &hostname) const
 检查是否有指定域名的证书
size_t host_count () const noexcept
 获取配置的域名数量

静态 Public 成员函数

static int sni_callback (void *ssl, int *alert, void *arg)
 SNI回调函数(用于SSL_CTX_set_tlsext_servername_callback)

详细描述

SNI (Server Name Indication) 证书管理器

支持为不同域名配置不同的SSL证书。 在TLS握手时根据客户端SNI hostname自动选择合适的SSL_CTX。

使用示例:

sni_manager sni;
sni.add_host("example.com", ssl_context(cert1, key1));
sni.add_host("api.example.com", ssl_context(cert2, key2));
sni.set_default_context(ssl_context(default_cert, default_key));
// 在SSL握手回调中使用:
SSL_CTX* ctx = sni.select_context(servername);
void add_host(const string &hostname, ssl_context ctx)
添加域名及其SSL上下文
void set_default_context(ssl_context ctx)
设置默认SSL上下文(SNI未匹配时使用)
SSL/TLS上下文管理类

在文件 sni_manager.hpp39 行定义.

成员函数说明

◆ add_host()

void neforce::sni_manager::add_host ( const string & hostname,
ssl_context ctx )

添加域名及其SSL上下文

参数
hostname域名
ctxSSL上下文

◆ remove_host()

void neforce::sni_manager::remove_host ( const string & hostname)

移除域名

参数
hostname域名

◆ select_ssl_ctx()

void * neforce::sni_manager::select_ssl_ctx ( const string & server_name) const
nodiscard

根据SNI hostname选择SSL_CTX

参数
server_name客户端发送的SNI hostname
返回
匹配的SSL_CTX指针,未找到返回默认上下文或nullptr

匹配规则:

  1. 精确匹配 hostname
  2. 通配符匹配 *.domain.com
  3. 返回默认上下文

◆ set_default_context()

void neforce::sni_manager::set_default_context ( ssl_context ctx)

设置默认SSL上下文(SNI未匹配时使用)

参数
ctx默认SSL上下文

◆ sni_callback()

int neforce::sni_manager::sni_callback ( void * ssl,
int * alert,
void * arg )
static

SNI回调函数(用于SSL_CTX_set_tlsext_servername_callback)

此静态函数可作为OpenSSL的SNI回调,自动查询sni_manager实例。 通过SSL_CTX_set_tlsext_servername_arg设置manager指针。


该类的文档由以下文件生成: