Aller au contenu

DEVIOOPCUAServer

Introduction

DevIO OPC UA Server permet d’exposer les données de la plateforme DevIO via le protocole standard OPC UA, facilitant l’interopérabilité avec des systèmes tiers (SCADA, MES, IoT, etc.). Il s’intègre dans l’écosystème industriel pour la supervision, l’acquisition de données et le pilotage d’équipements, tout en garantissant sécurité et flexibilité grâce à la gestion avancée des certificats et des accès.


Paramètres et configuration

Activation de l'interface applicative

Comment déclarer l'interface applicative ?
  1. Ouvrir votre projet avec Dev I/O Studio
  2. Réalisez l'import base binaire si nécessaire
  3. Basculer le projet en lecture/écriture
  4. Cliquez-droit sur Serveur, puis Propriétés...

Assurez-vous que le service Dev I/O soit arrêté.

DEVIOOPCUAServer_activate

Dans l'onglet OPC, cochez Serveur UA ou renseignez -UASM dans les arguments additionnels

Paramètres avancés
Paramètre Description
Désactivation historiques Désactive la remontée OPC des valeurs historisées
Ecritures identiques Force l'écriture OPC de valeurs identiques
Evénementiel Utilise le serveur UA pour les évènements
Heure locale Utilise l'heure locale pour l'horodatage des valeurs OPC
Inhibition notification Inhibe le fonctionnement en mode reporting du serveur
Noms courts OPC Utilise des noms courts dans OPC
Port TCP serveur UA Indique le port TCP de connexion du serveur UA (2525 par défaut)
Sauvegarde historiques UA Sauvegarde des informations dans le serveur OPC UA pour le traitement des historiques
Serveur UA Utilise le serveur OPC UA par défaut
Serveur UA spécifique Indique le nom du serveur OPC UA
Temporisation historiques Indique la temporisation en millisecondes de la remontée OPC des valeurs historisées

Sécurité

Certificats

Auto-signé

Par défaut, les certificats DevIOOPCUAServer sont gérés et auto-signé dans %CommonApplicationData%\OPC Foundation\CertificateStores.
%CommonApplicationData% est une variable d'environnement Windows (typiquement, elle vaut C:\ProgramData).

Ce mode requiert que les certificats clients OPC UA et DevIO OPCUA Server se fasse confiance mutuellement (Trust). Les certificats auto-signés sont pratiques pour les environnements internes ou de test où la gestion manuelle de la confiance est acceptable

L'arborescence des certificats se compose de la manière suivante

C:\PROGRAMDATA\OPC FOUNDATION\CERTIFICATESTORES
+---PrivateKeys
|   +---certs
|   |       DevIO OPCUA Server [<thumbprint>].der
|   |
|   \---private
|           DevIO OPCUA Server [<thumbprint>].pfx
|
\---TrustList
    \---certs
            DevIO OPCUA Server [<thumbprint>].der

PrivateKeys/certs : Dossier où est stocké le certificat DevIO OPCUA Server au format .der.
PrivateKeys/private : Dossier où est stockée la clé privée de DevIO OPCUA Server au format .pfx.
TrustList/certs : Contient les certificats de confiance au format .der. (typiquement, les certificats clients OPC UA autorisé à se connecter)

Si vous souhaitez modifier les chemins d'accès, éditez le fichier DevIOOpcUAServer.config.xml

  <SecurityConfiguration>
    <ApplicationCertificate>
      <StoreType>Directory</StoreType>
      <StorePath>%CommonApplicationData%\OPC Foundation\CertificateStores\PrivateKeys</StorePath>
      <SubjectName>DevIO OPCUA Server</SubjectName>
    </ApplicationCertificate>
    <TrustedIssuerCertificates>
      <StoreType>Directory</StoreType>
      <StorePath>%CommonApplicationData%\OPC Foundation\CertificateStores\CertificateAuthorities</StorePath>
    </TrustedIssuerCertificates>
    <TrustedPeerCertificates>
      <StoreType>Directory</StoreType>
      <StorePath>%CommonApplicationData%\OPC Foundation\CertificateStores\TrustList</StorePath>
    </TrustedPeerCertificates>
  </SecurityConfiguration>
Certificat d'autorité de confiance.

TrustedIssuerCertificates Certificat d'autorité de confiance.

Signé par une Autorité (CA)

Pour simplifier la gestion des certificats et/ou dans le cas d'une application nécessitant une confiance externe, il est préférable d'utiliser des certificats signés par une autorité de certification. Dans ce cas, le certificat délivré par votre PKI doit respecter les pré-requis suivants:

CommonName : DevIO OPCUA Server
KeyUsage : digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
SubjectAlternativeName : URL=urn:<hostname>:DevIOOPCUA:Server

Notes

CommonName (par défaut DevIO OPCUA Server) doit être correspondre au SubjectName du fichier DevIOOpcUAServer.config.xml.
SubjectAlternativeName : remplacer <hostname> par le hostname, ou l'ip du serveur sur lequel est installé Dev I/O.

Requête de signature

Bien que le fichier CSR puisse être généré par diverses manière, voici un exemple avec la commande Windows certreq. Cette procédure stocke la clé privée dans le store Windows et génère un fichier CSR à l'emplacement de votre choix.

Editez un fichier .inf (exemple DevIOOPCUAServer.inf) et coller le contenu ci-dessous en adaptant <hostname>

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=DevIO OPCUA Server"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xF0 ; digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
OID=1.3.6.1.5.5.7.3.2 ; Client Authentication

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "URL=urn:<hostname>:DevIOOPCUA:Server&DNS=<hostname>"
2.5.29.19 = "{text}"
_continue_ = "CA=FALSE"

Exécutez la commande ci-dessous en mode Administrateur

certreq -new "<path du fichier .inf de l'étape 1>" "<path du fichier csr>"
Store Windows

Certaines organisations préfèrent utiliser le Store Windows pour la gestion et le déploiement des certificats OPC UA. Voici un exemple de configuration.

  • My : Certificats personnels pour l'utilisateur ou la machine locale.
  • CA : Certificats des autorités de certification intermédiaires.
<SecurityConfiguration>
  <ApplicationCertificate>
    <StoreType>X509Store</StoreType>
    <StorePath>LocalMachine\My</StorePath>
    <SubjectName>DevIO OPCUA Server</SubjectName>
  </ApplicationCertificate>
  <TrustedIssuerCertificates>
    <StoreType>X509Store</StoreType>
    <StorePath>LocalMachine\CA</StorePath>
  </TrustedIssuerCertificates>
  <TrustedPeerCertificates>
    <StoreType>X509Store</StoreType>
    <StorePath>LocalMachine\UA Applications</StorePath>
  </TrustedPeerCertificates>
</SecurityConfiguration>

Il est également possible de remplacer LocalMachine par CurrentUser dans le cas où les certificats doivent être exclusivement accessible pour le compte de service Dev I/O (non compatible avec le compte SYSTEM).

Authentification

RequireLogin positionné à True interdit la connexion anonyme et nécessite un utilisateur et un mot de passe.
Le fichier secret, que l’on peut installer dans le répertoire de la base courante, contient les identifiants autorisés à se connecter.

<setting name="RequireLogin" serializeAs="String">
  <value>True</value>
</setting>
<setting name="SecretFile" serializeAs="String">
  <value>%DEVIO_PATH_BASE%\secret.xml</value>
</setting>

L’attribut IdProperty est une expression régulière qui indique comment extraire un utilisateur à partir d’une chaine de paramètres équipement et ou data.
L’expression valide et extrait le code : Dans l'exemple ci-dessous, la portion ([^ ]*) trouve une suite de caractères différents d’un espace qui suit l’indicateur -CID :

<?xml version="1.0" encoding="utf-8"?>
<!-- IdProperty = expression régulière permettant d'extraire le code utilisateur parmi les paramètres équipement et/ou data -->
<SecretFile IdProperty="(?:^| )-CID ([^ ]*)(?:$| )">
      <Connections>
            <!-- Utiliser PasswordEncryption pour encoder le mot de passe -->
            <Connection ConnectionId="Client1" Password="bvqHuLGAh0NNJVKx44bJvw==" /> <!-- P1 -->
            <Connection ConnectionId="Client2" Password="5hmwc3ML5D3+M6v641mRCA==" /> <!-- P2 -->
      </Connections>
</SecretFile>
Warning

Les mots de passe n’apparaissent pas en clair dans le fichier. L'encodage doit être réalisé avec l’outil DevIOPasswordEncryption :

DevIOOpcUAServer.exe.config

DevIOOpcUA.Server.Properties.Settings
Nom du paramètre Type de sérialisation Valeur
TcpPort String 2525
IpAddressOrHostName String localhost
KeepAliveTime String 5000
DevIOServers Xml DEVIOSRV.OPCServer
Legacy String False
ForceNotificationQueueSize String 0
ConfigNodes String False
PlanningNodes String False
IoctrlDelay String 5000
CleanDatabasePeriod_Hour String 0
DeleteReadOnce String False
MaxTotalSampleCount String 100000000
MaxSampleLifetime_Day String 90
PlanningPerEquipmentNodes String False
EssaisReconnexion String 3
TempsReconnexion String 60000
AutoConfig String False
Upgraded String False
ForceMonitoring String False
RequireLogin String False
SecretFile String %DEVIO_PATH_BASE%\secret.xml
UncertainAtStart String None

Exemples de connexion côté client

Avec UAExpert (Windows)

  1. Ouvrez UAExpert.
  2. Ajoutez un nouveau serveur OPC UA :
  3. Endpoint : opc.tcp://<adresse_ip_ou_nom_machine>:2525
  4. Importez le certificat du serveur si nécessaire.
  5. Connectez-vous avec les identifiants configurés (si l’authentification est activée).

Avec Python (opcua-client)

from opcua import Client

url = "opc.tcp://localhost:2525"
client = Client(url)
# Si authentification activée :
# client.set_user("Client1")
# client.set_password("votre_mot_de_passe")
client.connect()
try:
    root = client.get_root_node()
    print("Objets racine:", root)
finally:
    client.disconnect()

FAQ

Q : Je n’arrive pas à me connecter, le client refuse le certificat. - Vérifiez que le certificat du client est bien ajouté dans le dossier TrustList du serveur. - Vérifiez la date/heure système sur les deux machines.

Q : L’authentification échoue, que faire ? - Vérifiez le fichier secret.xml et l’encodage du mot de passe. - Utilisez l’outil DevIOPasswordEncryption fourni avec DevIO (voir documentation ou support pour l’emplacement).

Q : Le port 2525 est déjà utilisé ou bloqué. - Modifiez le port dans la configuration et ouvrez-le dans le pare-feu Windows.

Q : Comment activer/désactiver la gestion des historiques ? - Utilisez les paramètres Désactivation historiques ou Sauvegarde historiques UA dans la configuration avancée.