Sur cette page

Création de clients OPC UA avec prise en charge de la sécurité

L'une des principales caractéristiques d'OPC UA est la prise en charge de la sécurité, ce qui signifie que nous disposons d'un protocole crypté et signé, ainsi que d'un support d'authentification et d'autorisation de l'utilisateur.

Pour que cela fonctionne, chaque instance d'application (installation d'un programme) doit avoir son propre Application Instance Certificate et la clé privée correspondante.

Les applications peuvent générer elles-mêmes des certificats auto-signés (voir Qt OPC UA X509 Support), en obtenir auprès d'une autorité de certification à l'aide d'OPC UA GDS, ou peuvent simplement être configurées avec des certificats créés manuellement par l'utilisateur.

Configuration de l'application UA

Pour permettre au client d'utiliser des connexions sécurisées, il est important de

  • Configurer l'identité d'application correcte
    m_identity = m_pkiConfig.applicationIdentity();
  • Configurer les emplacements PKI pour que le SDK puisse trouver le certificat, la clé privée, la liste de confiance, etc.

    Voir, par exemple, le code de l'exemple du visualisateurQt OPC UA :

    void MainWindow::setupPkiConfiguration() { const QDir pkidir =QDir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/pki") ; if (!pkidir.exists() && !copyDirRecursively(":/pki", pkidir.path()))        qFatal("Could not set up directory %s!", qUtf8Printable(pkidir.path()));
    
        m_pkiConfig.setCertificateFile(pkidir.absoluteFilePath("own/certs/opcuaviewer.der")) ; m_pkiConfig.setPrivateKeyFile(pkidir.absoluteFilePath("own/private/opcuaviewer.pem")) ; m_pkiConfig.setTrustListDirectory(pkidir.absoluteFilePath("trusted/certs")) ; m_pkiConfig.setRevocationListDirectory(pkidir.absoluteFilePath("trusted/crl")) ; m_pkiConfig.setIssuerListDirectory(pkidir.absoluteFilePath("issuers/certs")) ; m_pkiConfig.setIssuerRevocationListDirectory(pkidir.absoluteFilePath("issuers/crl")) ; const QStringList toCreate = { m_pkiConfig.issuerListDirectory(),m_pkiConfig.issuerRevocationListDirectory() } ; for(const QString &dir: toCreate) { if (!QDir().mkpath(dir))            qFatal("Could not create directory %s!", qUtf8Printable(dir));
        } }

    Dans l'exemple, nous extrayons les certificats propres et de confiance préconfigurés du système de ressources Qt Location vers un emplacement accessible en écriture dans le système de fichiers. Les autres répertoires pour les listes d'émetteurs (de révocation) sont créés manuellement.

Première connexion

Lors de la première connexion, le client doit faire confiance au certificat du serveur.

Le client doit afficher un avertissement concernant le certificat (avec les détails du certificat) et offrir la possibilité d'enregistrer le certificat dans sa liste de confiance. Pour un exemple, voir Qt OPC UA Viewer Example.

Lorsque le client a accepté le certificat du serveur, vous pouvez essayer de vous connecter à nouveau. Il se peut alors que le serveur rejette le certificat du client. Cela est indiqué par le code d'erreur générique BadSecurityChecksFailed. Les serveurs stockent normalement les certificats rejetés dans un dossier spécial rejected. L'administrateur peut les déplacer dans la liste de confiance pour autoriser les clients. Cela évite de copier manuellement le certificat du client sur la machine serveur.

Dès que le serveur a fait confiance au client, vous devriez pouvoir vous connecter en toute sécurité.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.