Security 加密
本节是 SDK 加密相关 API 与证书工具.
子页跳转
- 生成证书 / 服务端互信配置 / 故障排查请参考 证书生成与配置.
- Session 构造时如何传安全参数请参考 构造函数.
- 服务端支持的安全模式探测请参考 GetEndpoints.
三种 SecurityMode
public enum MessageSecurityMode { Invalid, None, Sign, SignAndEncrypt }
构造 Session 时传:
using var ua = new DarraOpcUa("opc.tcp://server:4840",
securityMode: MessageSecurityMode.SignAndEncrypt,
clientCertPath: @"C:\certs\client.pfx",
clientKeyPath: "123456");
| Mode | 数据完整性 | 机密性 | 适用 |
|---|---|---|---|
None | × | × | 开发期 / 内网 / 调试 |
Sign | ✓ | × | 防篡改, 不防嗅探 |
SignAndEncrypt | ✓ | ✓ | 生产推荐 |
SecurityPolicyUri
支持 (当前实现):
http://opcfoundation.org/UA/SecurityPolicy#Nonehttp://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256(主用)
UserToken
public enum UserTokenType { Anonymous, Username, Certificate, Issued }
通过构造参数选择:
| Token | 构造参数 |
|---|---|
| Anonymous | 不传 username |
| Username | username: "...", password: "..." |
| Certificate | (后续版本完善) 用户证书参数 |
| Issued | (本 SDK 暂不实现) |
CertificateManager (证书工具)
using DarraOpcUa_Client;
// 生成自签证书
CertificateManager.GenerateSelfSigned(
outPath: @"C:\certs\client.pfx",
password: "123456",
commonName: "MyClient",
applicationUri: "urn:my-company:my-client",
validDays: 365);
// 校验证书
var info = CertificateManager.Inspect(@"C:\certs\client.pfx", "123456");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Valid until: {info.NotAfter}");
Console.WriteLine($"SAN URI: {info.SubjectAltNameUri}");
详细见 证书生成与配置.