跳到主要内容

Security 加密

本节是 SDK 加密相关 API 与证书工具.

子页跳转

三种 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#None
  • http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256 (主用)

ConnectionConfig.security_policy_uri = None 时按 mode 自动选:

  • None#None
  • Sign / SignAndEncrypt#Basic256Sha256

UserToken

pub enum UserTokenType {
Anonymous = 0,
Username = 1,
Certificate = 2,
Issued = 3,
}

通过 ConnectionConfig 字段选择:

Token字段
Anonymous不设 username (None)
Usernameusername = 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 加密通道.

下一步