CAOhs123456789 2023-12-09 19:48 采纳率: 33.3%
浏览 15
已结题

QT Open62541

哪位熟悉QT OPC UA (QOPCUA) 的 PKI Certificate , Open 62541, 搞懵了,这个东西咋 用户名,密码,sign and encrypt 连接, 试了官网给的例子也不行? https://dochttps://doc.qt.io/qt-5/qtopcua-opcuavie

img


wer-example

  • 写回答

16条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-09 19:49
    关注

    引自强大而免费的微信小程序:皆我百晓生

    对于使用QT OPC UA (QOPCUA)的PKI证书,Open62541进行用户名、密码、sign和encrypt连接的问题,以下是一些详细解答和步骤。

    1. 首先,确保你已经安装了Open62541和QT,并且可以成功编译和运行官方给出的示例代码。确保你已经了解了OPC UA协议和其相关概念,以便更好地理解下面的步骤。

    2. 使用PKI证书进行连接时,首先需要获取到证书相关的信息。这包括证书的路径、密码、私钥密码等。你可以使用以下代码来获取到PKI证书所需的信息:

    #include <QOpcUaProvider>
    #include <QOpcUaProviderPlugin>
    
    // 假设证书的路径和密码在配置文件中存储
    QString certificatePath = ""; // 证书路径
    QString certificatePassword = ""; // 证书密码
    QString privateKeyPassword = ""; // 私钥密码
    
    // 创建一个用于连接的安全策略
    QSharedPointer<QOpcUaSecurityPolicy> securityPolicy = QOpcUaSecurityPolicy::create(QOpcUaSecurityPolicy::SecurityPolicyUri::SecurityPolicy_Basic256Sha256);
    
    // 创建一个证书
    QSharedPointer<QOpcUaCertificate> certificate = QOpcUaCertificate::fromPEMFile(certificatePath, certificatePassword, privateKeyPassword);
    
    // 创建一个证书链
    QOpcUaCertificateChain certificateChain;
    certificateChain.setCertificateList(QList<QOpcUaCertificate>() << certificate);
    
    // 创建一个用户名和密码
    QOpcUaUserAuthSettings userAuth;
    userAuth.setSecurityPolicy(securityPolicy);
    userAuth.setCertificateChain(certificateChain);
    
    1. 确保OPC UA服务器已经配置了使用PKI证书进行连接的策略。你可以在OPC UA服务器的配置文件中查找相关的配置项,并确保证书和私钥已正确配置。

    2. 使用用户名和密码连接到OPC UA服务器。以下是一个示例代码:

    #include <QOpcUaProvider>
    #include <QOpcUaProviderPlugin>
    #include <QOpcUaEndpoint>
    #include <QOpcUaApplicationDescription>
    
    // 创建一个OPC UA终端
    QOpcUaEndpoint endpoint;
    endpoint.setUrl(QUrl("opc.tcp://localhost:4840")); // 使用正确的OPC UA服务器URL
    
    // 获取OPC UA服务器的应用程序描述信息
    QOpcUaApplicationDescription appDesc;
    appDesc.setApplicationUri(endpoint.url().toString());
    
    // 创建一个连接
    QOpcUaClientConnection connection;
    connection.setEndpoint(endpoint);
    connection.setApplicationDescription(appDesc);
    connection.setSecurityAuthenticationMode(QOpcUaSecurityAuthenticationMode::UsernamePassword);
    
    // 设置用户名和密码
    connection.setSecurityUserAuthSettings(userAuth);
    connection.setSecurityUsername("your-username"); // 替换为你的用户名
    connection.setSecurityPassword("your-password"); // 替换为你的密码
    
    // 连接到OPC UA服务器
    if (!connection.connect()) {
        // 连接失败的处理
        return;
    }
    
    // 连接成功的处理
    

    在此示例代码中,我们使用了名为"your-username"和"your-password"的用户名和密码进行连接。你需要将它们替换为你的实际用户名和密码。

    总结:

    上述是使用QT OPC UA (QOPCUA)的PKI证书和Open62541进行用户名、密码、sign和encrypt连接的详细步骤。请确保你已正确安装配置了相关的库和证书,并根据你的实际情况进行参数替换。

    你可以参考官方文档和示例代码,以及查阅相关的Open62541和QT OPC UA的文档和社区资源,以获得更多的帮助和支持。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月11日
  • 修改了问题 12月9日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同