ssl 无法通过https连接连接到prosysopcua

bprjcwpo  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(145)

因此,有两种类型的端点连接到opcua模拟服务器,一种是tcp,另一种是https。

的数据
我尝试了一切我可以连接的https端点,但我没有得到运气。
这是我的Python代码:

`host, port = address.split("/")[2].split(":")
    server_address = host
    server_port = int(port)
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
    ssl_context.check_hostname = False
    ssl_context.verify_mode = ssl.CERT_NONE
    ssl_socket = ssl_context.wrap_socket(client_socket, server_hostname=server_address)
    ssl_socket.connect((server_address, server_port))
    node_id = "ns=3;i=1002"  # Replace with your desired NodeId
    message = (
            b'\x03\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00'
            b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00'
            b'\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00' + len(node_id).to_bytes(4, byteorder='little')
            + node_id.encode()
    )
    content_type = b'application/octet-stream'
    request = (
            b"POST / HTTP/1.1\r\n"
            b"Host: " + server_address.encode() + b"\r\n"
            b"Content-Type: " + content_type + b"\r\n"
            b"Content-Length: " + str(
        len(message)).encode() + b"\r\n"
                                      b"\r\n" + message
    )
    ssl_socket.send(request)
    response = ssl_socket.recv(4096)
    print("Response:\n", response)
    ssl_socket.close()`

字符串
对于上面的代码,这是我收到的错误:
第一个月
我需要使用object id获取对象的值。协议必须是HTPPS。

vtwuwzda

vtwuwzda1#

opc ua的http协议非常复杂。你必须实现很多规范,比如编码层、安全特性等等。.
我只会使用普通的opc ua tcp和asyncua
如果你真的需要使用https,你至少可以使用asyncua二进制编码和数据类型来帮助生成正确的二进制消息。

m1m5dgzv

m1m5dgzv2#

我不知道你的消息是什么,但你需要知道你的客户端需要通过HTTPS传递OPC UA二进制消息。
因此,您将无法使用简单的HTTP客户端-您将需要使用OPC UA客户端,该客户端可以使用编码为UA二进制消息的OPC UA服务调用通过HTTPS打开适当的OPC UA客户端-服务器会话。
这是令人困惑的,我们(Prosys OPC)通常不推荐UA HTTPS,除非你没有选择使用UA TCP。

相关问题