Sur cette page

Qt OPC UA Support X509

Montre comment générer des clés et des demandes de signature de certificat.

Cet exemple montre comment les applications clientes peuvent générer leur propre certificat auto-signé ou générer une demande de signature de certificat.

Génération d'une clé RSA

Dans un premier temps, une clé RSA est générée :

QOpcUaKeyPair key;
key.generateRsaKey(QOpcUaKeyPair::RsaKeyStrength::Bits2048);

La clé privée peut être enregistrée dans un fichier pour un usage ultérieur :

QByteArray keyData = key.privateKeyToByteArray(QOpcUaKeyPair::Cipher::Unencrypted, QString());

QFile keyFile(u"privateKey.pem"_s);
if (!keyFile.open(QFile::WriteOnly))
    return EXIT_FAILURE;

keyFile.write(keyData);
keyFile.close();

Génération de demandes de signature de certificat

Ensuite, une demande de signature de certificat est créée. Il est également nécessaire de définir le sujet du certificat et d'ajouter toutes les extensions nécessaires pour OPC UA.

QOpcUaX509CertificateSigningRequest csr;

// Set the subject of the certificate
QOpcUaX509DistinguishedName dn;
dn.setEntry(QOpcUaX509DistinguishedName::Type::CommonName, u"QtOpcUaViewer"_s);
dn.setEntry(QOpcUaX509DistinguishedName::Type::CountryName, u"DE"_s);
dn.setEntry(QOpcUaX509DistinguishedName::Type::LocalityName, u"Berlin"_s);
dn.setEntry(QOpcUaX509DistinguishedName::Type::StateOrProvinceName, u"Berlin"_s);
dn.setEntry(QOpcUaX509DistinguishedName::Type::OrganizationName, u"The Qt Company"_s);
csr.setSubject(dn);

Il y a maintenant deux options :

1. Lorsque vous devez faire signer votre demande de signature de certificat par une autorité de certification, vous devez utiliser les données de la demande.

QByteArray certificateSigningRequestData = csr.createRequest(key);

2. Lorsqu'il n'y a pas d'autorité de certification, vous devez signer vous-même la demande.

QByteArray selfSignedCertificateData = csr.createSelfSignedCertificate(key);

Fichiers :

© 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.