跳到主要内容

Security 加密

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

子页跳转

三种 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#None
  • http://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
Usernameusername="...", password="..."
Certificate(后续版本完善) 用户证书参数
Issued(本 SDK 暂不实现)

证书工具

当前 Python SDK 不内置证书生成模块, 推荐用 OpenSSL CLI 或 Python cryptography 包生成 PFX, 详见 证书生成与配置.

后续版本会提供 darra_opcua.certificates.generate_self_signed(...) Python 端 API.

下一步