Qt OPC UA X.509-Unterstützung
Zeigt, wie Schlüssel und Zertifikatssignierungsanforderungen generiert werden.
Dieses Beispiel zeigt, wie Client-Anwendungen ein eigenes selbstsigniertes Zertifikat oder eine Zertifikatssignierungsanforderung generieren können.
RSA-Schlüssel generieren
Zunächst wird ein RSA-Schlüssel generiert:
QOpcUaKeyPair key;
key.generateRsaKey(QOpcUaKeyPair::RsaKeyStrength::Bits2048);Der private Schlüssel kann zur weiteren Verwendung in einer Datei gespeichert werden:
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();Erstellen von Zertifikatssignierungsanfragen
Als Nächstes wird eine Zertifikatssignierungsanforderung erstellt. Dabei müssen auch der Zertifikatsinhaber festgelegt und alle für OPC UA erforderlichen Erweiterungen hinzugefügt werden.
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);Nun gibt es zwei Möglichkeiten:
1. Wenn Ihre Zertifikatssignierungsanforderung von einer Zertifizierungsstelle signiert werden soll, müssen Sie die Anforderungsdaten verwenden.
QByteArray certificateSigningRequestData = csr.createRequest(key);2. Wenn keine Zertifizierungsstelle vorhanden ist, müssen Sie die Anforderung selbst signieren.
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.