Qt OPC UA Prise en charge de X509
Explique 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 une utilisation ultérieure :
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 d’une demande 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 requises 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);Deux options s’offrent alors à vous :
1. Si 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. En l’absence d’autorité de certification, vous devez autosigner la demande.
QByteArray selfSignedCertificateData = csr.createSelfSignedCertificate(key);© 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.