Security 加密
本节是 SDK 加密相关 API 与证书工具.
子页跳转
- 生成证书 / 服务端互信配置 / 故障排查请参考 证书生成与配置.
- Session 构造时如何传安全参数请参考 构造函数.
- 服务端支持的安全模式探测请参考 GetEndpoints.
三种 SecurityMode
pub enum MessageSecurityMode {
Invalid = 0,
None = 1,
Sign = 2,
SignAndEncrypt = 3,
}
构造 Session 时通过 ConnectionConfig 传:
use darra_opcua::{Session, ConnectionConfig, MessageSecurityMode};
let mut cfg = ConnectionConfig::new("opc.tcp://server:4840");
cfg.security_mode = MessageSecurityMode::SignAndEncrypt;
cfg.client_cert_path = Some("C:/certs/client.pfx".into());
cfg.client_key_path = Some("123456".into()); // PFX 密码 (字段复用)
let mut s = Session::with_config(cfg)?;
s.connect()?;
| Mode | 数据完整性 | 机密性 | 适用 |
|---|---|---|---|
None | × | × | 开发期 / 内网 / 调试 |
Sign | ✓ | × | 防篡改, 不防嗅探 |
SignAndEncrypt | ✓ | ✓ | 生产推荐 |
SecurityPolicyUri
支持 (当前实现):
http://opcfoundation.org/UA/SecurityPolicy#Nonehttp://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256(主用)
ConnectionConfig.security_policy_uri = None 时按 mode 自动选:
None→#NoneSign/SignAndEncrypt→#Basic256Sha256
UserToken
pub enum UserTokenType {
Anonymous = 0,
Username = 1,
Certificate = 2,
Issued = 3,
}
通过 ConnectionConfig 字段选择:
| Token | 字段 |
|---|---|
| Anonymous | 不设 username (None) |
| Username | username = Some(...) + password = Some(...) |
| Certificate | (后续版本完善) 用户证书参数 |
| Issued | (本 SDK 暂不实现) |
// 用户名 + 密码
cfg.username = Some("operator".into());
cfg.password = Some("secret".into());
证书工具 (Rust 侧)
当前 Rust SDK 不内置 CertificateManager 工具 (C# 有). 推荐用 OpenSSL 或直接复用 C#
Darra.OpcUa.Core.dll 的 CertificateManager 生成 PFX, Rust 侧加载使用.
详见 证书生成与配置.
加密相关 API
加密配置全部通过 ConnectionConfig 字段, 无独立 API. SDK Stack Phase 6 起完整支持
Sign / SignAndEncrypt 加密通道.