Security 加密
本节是 SDK 加密相关 API 与证书工具.
子页跳转
- 生成证书 / 服务端互信配置 / 故障排查请参考 证书生成与配置.
- Session 构造时如何传安全参数请参考 构造函数.
- 服务端支持的安全模式探测请参考 get_endpoints.
三种 SecurityMode
from darra_opcua import MessageSecurityMode
MessageSecurityMode.NONE # 1 (Python 关键字 None 冲突, 用 NONE 大写)
MessageSecurityMode.Sign # 2
MessageSecurityMode.SignAndEncrypt # 3
MessageSecurityMode.Invalid # 0
构造 Session 时传:
from darra_opcua import OpcUaSession, MessageSecurityMode
with OpcUaSession(
"opc.tcp://server:4840",
security_mode=MessageSecurityMode.SignAndEncrypt,
client_cert_path=r"C:\certs\client.pfx") as ua:
ua.connect()
| Mode | 数据完整性 | 机密性 | 适用 |
|---|---|---|---|
NONE | × | × | 开发期 / 内网 / 调试 |
Sign | ✓ | × | 防篡改, 不防嗅探 |
SignAndEncrypt | ✓ | ✓ | 生产推荐 |
SecurityPolicyUri
支持 (当前实现):
http://opcfoundation.org/UA/SecurityPolicy#Nonehttp://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256(主用)
不传 security_policy_uri 时按 security_mode 自动选 (NONE → #None, 其他 → #Basic256Sha256).
UserToken
from darra_opcua import UserTokenType
UserTokenType.Anonymous # 0
UserTokenType.Username # 1
UserTokenType.Certificate # 2
UserTokenType.Issued # 3
通过构造参数选择:
| Token | 构造参数 |
|---|---|
| Anonymous | 不传 username |
| Username | username="...", password="..." |
| Certificate | (后续版本完善) 用户证书参数 |
| Issued | (本 SDK 暂不实现) |
证书工具
当前 Python SDK 不内置证书生成模块, 推荐用 OpenSSL CLI 或 Python cryptography 包生成 PFX, 详见 证书生成与配置.
后续版本会提供 darra_opcua.certificates.generate_self_signed(...) Python 端 API.