Fix OPC UA server security policy configuration

- Use correct SecurityPolicyType enum values instead of strings
- Server now properly offers NoSecurity (0) policy endpoint
- Fixes 'No matching endpoints' error in client connections
This commit is contained in:
openhands 2025-11-01 21:10:17 +00:00
parent f2bedcd183
commit 3413ca4a85
1 changed files with 9 additions and 6 deletions

View File

@ -124,8 +124,9 @@ class OPCUAServer:
await self._configure_security() await self._configure_security()
else: else:
# No security (for development only) # No security (for development only)
from asyncua.ua import SecurityPolicyType
self.server.set_security_policy([ self.server.set_security_policy([
"http://opcfoundation.org/UA/SecurityPolicy#None" SecurityPolicyType.NoSecurity
]) ])
# Setup namespace # Setup namespace
@ -172,6 +173,8 @@ class OPCUAServer:
async def _configure_security(self): async def _configure_security(self):
"""Configure OPC UA security with certificates.""" """Configure OPC UA security with certificates."""
try: try:
from asyncua.ua import SecurityPolicyType
# Load or generate certificates # Load or generate certificates
if self.certificate_path and self.private_key_path: if self.certificate_path and self.private_key_path:
# Load existing certificates # Load existing certificates
@ -180,8 +183,8 @@ class OPCUAServer:
# Set security policies for secure connections # Set security policies for secure connections
self.server.set_security_policy([ self.server.set_security_policy([
SecurityPolicyBasic256Sha256, SecurityPolicyType.Basic256Sha256_SignAndEncrypt,
"http://opcfoundation.org/UA/SecurityPolicy#None" SecurityPolicyType.NoSecurity
]) ])
# Configure certificate validation # Configure certificate validation
@ -202,8 +205,8 @@ class OPCUAServer:
# Set security policies for secure connections # Set security policies for secure connections
self.server.set_security_policy([ self.server.set_security_policy([
SecurityPolicyBasic256Sha256, SecurityPolicyType.Basic256Sha256_SignAndEncrypt,
"http://opcfoundation.org/UA/SecurityPolicy#None" SecurityPolicyType.NoSecurity
]) ])
# Configure certificate validation # Configure certificate validation
@ -214,7 +217,7 @@ class OPCUAServer:
# Certificate generation not available, use only None security policy # Certificate generation not available, use only None security policy
logger.warning("certificate_generation_not_available") logger.warning("certificate_generation_not_available")
self.server.set_security_policy([ self.server.set_security_policy([
"http://opcfoundation.org/UA/SecurityPolicy#None" SecurityPolicyType.NoSecurity
]) ])
return return