admin 发表于 2022-3-8 20:03:14

SSL 运行环境

SSL 组件在启动通信前需要初始化 SSL 环境参数,通信完毕时需要清理 SSL 运行环境。
HP-Socket v4.x.x 及其之前的版本使用全局唯一 SSL 运行环境,所有 SSL 组件都共享该环
境 , 并 通 过 HP_SSL_Initialize() / HP_SSL_AddServerContext() / HP_SSL_Cleanup() /
HP_SSL_IsValid() 等全局函数操作该全局 SSL 环境,HP-Socket v5.0.x 版本开始,每个 SSL
组件使用独立的 SSL 运行环境,因此上述函数已被删除。取而代之,SSL 组件提供相应的
实例方法来操作自身的 SSL 运行环境:
 设置 SSL 加密套件
VOID SetSSLCipherList(lpszCipherList)
HP-Socket 的默认加密套件为 DEFAULT:!aNULL:!eNULL:!SSLv2:!SSLv3,如需修改加
密套件(如:启用 SSLv3 用来支持旧应用系统)则需要调用 SetSSLCipherList() 设置所需的
加密套件。加密套件详细信息请参考 OpenSSL Ciphers 文档。
注 意 : 要 使 加 密 套 件 设 置 生 效 , 必 须 在 调 用 SetupSSLContext() 、
AddSSLContext()方法前调用 SetSSLCiperList()设置加密套件。
 初始化 SSL 环境参数:
BOOL SetupSSLContext(enSessionMode, iVerifyMode = SSL_VM_NONE,
lpszPemCertFile = nullptr, lpszPemKeyFile = nullptr, lpszKeyPasswod = nullptr,
lpszCAPemCertFileOrPath = nullptr, )
BOOL SetupSSLContextByMemory(enSessionMode, iVerifyMode = SSL_VM_NONE,
lpszPemCert = nullptr, lpszPemKey = nullptr, lpszKeyPasswod = nullptr, lpszCAPemCert =
nullptr, )
参数 iVerifyMode 指定 SSL 验证模式;参数 lpszPemCert、lpszPemKey、
lpszKeyPasswod 和 lpszCAPemCert 分别指定证书文件、私钥文件、私钥密码和
CA 证书文件/目录;参数 fnServerNameCallback 只用于 HTTPS 服务端,此参数指定 SNI 回
调 函 数 指 针 , 如 果 此 参 数 值 为 nullptr 则 使 用 HP-Socket 默 认 SNI 回 调 函 数 :
HP_SSL_DefaultServerNameCallback(lpszServerName, pContext),该默认 SNI 回调函数根据
BindSSLServerName(lpszServerName, iContextIndex) 设置的域名-证书绑定关系查找证书,如
果找不到则使用默认证书。初始化成功返回 TRUE,失败返回 FALSE,初始化失败可通过
SYS_GetLastError() 获取错误代码。(参数详细说明请参考 include/hpsocket/HPSocket-SSL.h 或
include/hpsocket/HPSocket4C-SSL.h 头文件)
 增加 SNI 主机证书(SSL Server 组件):
int AddSSLContext(iVerifyMode, lpszPemCertFile, lpszPemKeyFile, lpszKeyPasswod =
nullptr, lpszCAPemCertFileOrPath = nullptr)
int AddSSLContextByMemory(iVerifyMode, lpszPemCert, lpszPemKey, lpszKeyPasswod =
nullptr, lpszCAPemCert = nullptr)
仅用于 SSL Server 组件。参数 iVerifyMode 指定 SSL 验证模式;参数 lpszPemCert、
lpszPemKey、lpszKeyPasswod 和 lpszCAPemCert 分别指定证书文件、私钥
文件、私钥密码和 CA 证书文件/目录。执行成功返回 SNI 主机证书对应的索引,该索引用
于在 SNI 回调函数中定位 SNI 主机;失败返回-1,可通过 SYS_GetLastError() 获取错误代
码。
页: [1]
查看完整版本: SSL 运行环境