NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ssl_context类 参考

SSL/TLS上下文管理类 更多...

#include <ssl_context.hpp>

Public 成员函数

 ssl_context (ssl_method method=ssl_method::TLS_SERVER)
 构造函数
bool load_certificate (const string &cert_file, const string &key_file)
 加载证书和私钥(从文件)
void load_certificate_from_memory (const string &cert_pem, const string &key_pem)
 加载证书和私钥(从内存)
bool load_verify_locations (const string &ca_file, const string &ca_path="")
 加载CA证书用于验证
void set_options (long options)
 设置SSL选项
void set_verify_mode (int mode)
 设置验证模式
void require_client_certificate ()
 要求客户端提供证书
void set_cipher_list (const string &ciphers)
 设置密码套件列表(TLS 1.2及以下)
void set_ciphersuites (const string &ciphersuites)
 设置密码套件列表(TLS 1.3)
void set_default_options ()
 设置安全的默认选项
void set_session_cache_size (long size)
 设置会话缓存大小
void set_timeout (long seconds)
 设置会话超时时间
void set_alpn_protos (const vector< string > &protocols)
 设置ALPN协议列表
NEFORCE_NODISCARD::SSL_CTX * native_handle () const noexcept
 获取原生SSL_CTX句柄
 operator bool () const noexcept
 布尔转换运算符
NEFORCE_NODISCARD bool is_valid () const noexcept
 检查上下文是否有效

详细描述

SSL/TLS上下文管理类

封装OpenSSL的SSL_CTX对象,提供SSL连接的配置和管理功能。 支持证书加载、验证配置、密码套件设置等。

主要功能:

  • SSL上下文创建和配置
  • 证书和私钥加载
  • CA证书验证配置
  • 密码套件和协议版本设置
  • ALPN(应用层协议协商)支持
  • 会话缓存和超时配置
注解
上下文对象是线程安全的,可以被多个SSL连接共享。

在文件 ssl_context.hpp60 行定义.

构造及析构函数说明

◆ ssl_context()

ssl_context::ssl_context ( ssl_method method = ssl_method::TLS_SERVER)
explicit

构造函数

参数
methodSSL/TLS方法类型(默认为TLS服务器)
异常
ssl_exceptionSSL上下文创建失败时抛出

创建SSL上下文并设置基本选项:

  • 禁用SSLv2/SSLv3(不安全)
  • 设置默认密码套件
  • 设置默认CA验证路径

引用了 ssl_context() , 以及 TLS_SERVER.

被这些函数引用 ssl_context().

成员函数说明

◆ is_valid()

NEFORCE_NODISCARD bool ssl_context::is_valid ( ) const
inlinenoexcept

检查上下文是否有效

返回
有效返回true

在文件 ssl_context.hpp235 行定义.

◆ load_certificate()

bool ssl_context::load_certificate ( const string & cert_file,
const string & key_file )

加载证书和私钥(从文件)

参数
cert_file证书文件路径(PEM格式)
key_file私钥文件路径(PEM格式)
返回
加载成功返回true

加载服务器或客户端的证书和对应的私钥。 会自动检查私钥是否与证书匹配。

◆ load_certificate_from_memory()

void ssl_context::load_certificate_from_memory ( const string & cert_pem,
const string & key_pem )

加载证书和私钥(从内存)

参数
cert_pem证书PEM数据
key_pem私钥PEM数据
异常
ssl_exceptionSSL上下文为空或解析、设置失败时抛出
value_exception证书或密钥数据为空时抛出

从内存中的PEM数据加载证书和私钥,适用于嵌入式证书。

◆ load_verify_locations()

bool ssl_context::load_verify_locations ( const string & ca_file,
const string & ca_path = "" )

加载CA证书用于验证

参数
ca_fileCA证书文件路径
ca_pathCA证书目录路径(可选)
返回
加载成功返回true

设置用于验证对等方证书的CA证书。 可以指定单个文件或目录(目录中的证书会被自动加载)。

◆ native_handle()

NEFORCE_NODISCARD::SSL_CTX * ssl_context::native_handle ( ) const
inlinenoexcept

获取原生SSL_CTX句柄

返回
SSL_CTX指针

在文件 ssl_context.hpp223 行定义.

◆ operator bool()

ssl_context::operator bool ( ) const
inlineexplicitnoexcept

布尔转换运算符

返回
上下文有效返回true

在文件 ssl_context.hpp229 行定义.

◆ require_client_certificate()

void ssl_context::require_client_certificate ( )

要求客户端提供证书

异常
ssl_exceptionSSL上下文为空时抛出

服务器端使用,要求客户端必须提供有效证书。

◆ set_alpn_protos()

void ssl_context::set_alpn_protos ( const vector< string > & protocols)

设置ALPN协议列表

参数
protocols协议名称列表
异常
ssl_exceptionSSL上下文为空或设置失败时抛出
value_exception协议名称长度无效时抛出

设置应用层协议协商(ALPN)支持的协议列表。 用于在TLS握手时协商应用层协议(如HTTP/2)。

◆ set_cipher_list()

void ssl_context::set_cipher_list ( const string & ciphers)

设置密码套件列表(TLS 1.2及以下)

参数
ciphersOpenSSL密码套件字符串
异常
ssl_exceptionSSL上下文为空或设置失败时抛出

设置可用的密码套件列表,格式为OpenSSL密码套件字符串。 例如:"ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384"

◆ set_ciphersuites()

void ssl_context::set_ciphersuites ( const string & ciphersuites)

设置密码套件列表(TLS 1.3)

参数
ciphersuitesOpenSSL TLS 1.3密码套件字符串
异常
ssl_exceptionSSL上下文为空或设置失败时抛出

设置TLS 1.3的密码套件列表。 例如:"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"

◆ set_default_options()

void ssl_context::set_default_options ( )

设置安全的默认选项

异常
ssl_exceptionSSL上下文为空时抛出

配置推荐的现代安全选项:

  • 禁用SSLv2/SSLv3/TLSv1/TLSv1.1
  • 优先使用服务器密码套件
  • 禁用压缩
  • 设置最小TLS版本为1.2
  • 设置安全的密码套件列表

◆ set_options()

void ssl_context::set_options ( long options)

设置SSL选项

参数
optionsOpenSSL SSL_OP_*标志位组合
异常
ssl_exceptionSSL上下文为空时抛出

设置SSL上下文的选项,如禁用特定协议版本、启用特定特性等。

◆ set_session_cache_size()

void ssl_context::set_session_cache_size ( long size)

设置会话缓存大小

参数
size缓存大小(会话数)
异常
ssl_exceptionSSL上下文为空时抛出

设置SSL会话缓存的最大会话数。 会话缓存可以提高重复连接的性能。

引用了 size().

◆ set_timeout()

void ssl_context::set_timeout ( long seconds)

设置会话超时时间

参数
seconds超时时间
异常
ssl_exceptionSSL上下文为空时抛出

设置SSL会话缓存中会话的超时时间。

◆ set_verify_mode()

void ssl_context::set_verify_mode ( int mode)

设置验证模式

参数
modeOpenSSL SSL_VERIFY_*模式
异常
ssl_exceptionSSL上下文为空时抛出

设置对等方证书的验证模式。 常用模式:

  • SSL_VERIFY_NONE:不验证客户端证书
  • SSL_VERIFY_PEER:验证客户端证书
  • SSL_VERIFY_FAIL_IF_NO_PEER_CERT:客户端必须提供证书

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