Qt OPC UA X509-Unterstützung

Zeigt, wie man Schlüssel und Zertifikatsignierungsanforderungen generiert.

Dieses Beispiel zeigt, wie Client-Anwendungen ihr eigenes selbstsigniertes Zertifikat oder eine Zertifikatsignierungsanforderung erzeugen können.

Generierung eines RSA-Schlüssels

Zunächst wird ein RSA-Schlüssel erzeugt:

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);
keyFile.open(QFile::WriteOnly);
keyFile.write(keyData);
keyFile.close();

Erzeugen von Zertifikatsignierungsanforderungen

Als nächstes wird eine Zertifikatsignierungsanforderung erstellt. Es ist auch notwendig, den Betreff des Zertifikats festzulegen und alle für OPC UA benötigten Erweiterungen hinzuzufügen.

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);

Jetzt gibt es zwei Optionen:

1. Wenn Sie Ihre Zertifikatsignierungsanforderung von einer Zertifizierungsstelle signieren lassen müssen, müssen Sie die Anforderungsdaten verwenden.

QByteArray certificateSigningRequestData = csr.createRequest(key);

2. Wenn es keine Zertifizierungsstelle gibt, müssen Sie die Anforderung selbst signieren.

QByteArray selfSignedCertificateData = csr.createSelfSignedCertificate(key);

Dateien:

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