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 ?
- Ouvrir votre projet avec Dev I/O Studio
- Réalisez l'import base binaire si nécessaire
- Basculer le projet en lecture/écriture
- Cliquez-droit sur Serveur, puis Propriétés...
Assurez-vous que le service Dev I/O soit arrêté.

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)
- Ouvrez UAExpert.
- Ajoutez un nouveau serveur OPC UA :
- Endpoint :
opc.tcp://<adresse_ip_ou_nom_machine>:2525 - Importez le certificat du serveur si nécessaire.
- 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.