Skip to content

安全通信:TLS 加密与认证

可用性:TLS 传输加密两个变体均支持;用户名密码认证为完整版(Full)专属, 精简版(Tiny)下该 API 在头文件中即被声明剔除,误用在编译期即报错。

概述

OnePath 在会话配置阶段提供两类安全能力,都通过配置构建器 onepath_config_t 一次性设置, 随后用 onepath_open_with_config 打开会话:

  • TLS 传输加密:为节点间链路启用 TLS,保护数据在传输中的机密性与完整性。两个变体均 支持,只需提供 CA 证书路径。
  • 用户名密码认证:在建立连接时校验对端身份,拒绝未授权节点接入。完整版专属。

两者可单独使用,也可叠加(加密链路 + 身份认证)。

TLS 传输加密

两个变体均支持。

c
int onepath_config_set_tls_ca(onepath_config_t cfg, const char *ca_path);

设置用于校验对端的 CA 证书路径。配合启用 TLS 的端点(如 tls/host:port 形式的端点地址) 即可让链路走加密传输。

参数说明
cfg配置句柄
ca_pathCA 证书文件路径

返回 ONEPATH_OK 成功。

c
onepath_config_t cfg;
onepath_config_new(&cfg);
onepath_config_set_mode(cfg, "client");
onepath_config_add_endpoint(cfg, "tls/192.168.1.10:7447");  /* 加密端点 */
onepath_config_set_tls_ca(cfg, "/etc/onepath/ca.pem");      /* 校验对端证书 */

onepath_session_t s;
onepath_open_with_config(&s, cfg);
onepath_config_destroy(cfg);

用户名密码认证

完整版(Full)专属。 精简版下 onepath_config_set_auth 在头文件中即被声明剔除, 误用在编译期即报错——这是一条明确的能力边界。

c
int onepath_config_set_auth(onepath_config_t cfg, const char *user, const char *password);

为会话设置用户名 / 密码凭据,在建立连接时进行身份认证。

参数说明
cfg配置句柄
user用户名
password密码

返回 ONEPATH_OK 成功。

c
onepath_config_t cfg;
onepath_config_new(&cfg);
onepath_config_set_mode(cfg, "client");
onepath_config_add_endpoint(cfg, "tls/192.168.1.10:7447");
onepath_config_set_tls_ca(cfg, "/etc/onepath/ca.pem");      /* 加密 */
onepath_config_set_auth(cfg, "alice", "s3cr3t");            /* 认证(仅 Full) */

onepath_session_t s;
onepath_open_with_config(&s, cfg);
onepath_config_destroy(cfg);

加密与认证叠加使用

生产环境建议同时启用 TLS 加密与身份认证:TLS 保护链路上的数据不被窃听 / 篡改, 认证拒绝未授权节点接入。两者通过同一个配置构建器设置,互不冲突。

配置生命周期

c
onepath_config_new(&cfg);          /* 创建配置构建器 */
/* ... set_mode / add_endpoint / set_tls_ca / set_auth ... */
onepath_open_with_config(&s, cfg); /* 内部拷贝配置,cfg 仍有效 */
onepath_config_destroy(cfg);       /* 用完务必销毁 */

onepath_open_with_config 内部拷贝配置,调用后 cfg 仍有效;无论是否传给过它,最终都 须 onepath_config_destroy 释放。完整的会话与配置接口见 会话管理

创建 / 销毁配对

创建销毁
onepath_config_newonepath_config_destroy
onepath_open_with_configonepath_close

OnePath™ 以预构建库形式交付,运行时零外部依赖。