Qt OPC UA X509 支持

展示如何生成密钥和证书签名请求。

此示例展示客户端应用程序如何生成自己的自签名证书或者生成证书签名请求。

生成 RSA 密钥

首先生成 RSA 密钥

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

私钥可以保存到文件中以便以后使用

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

QFile keyFile(u"privateKey.pem"_s);
keyFile.open(QFile::WriteOnly);
keyFile.write(keyData);
keyFile.close();

生成证书签名请求

接下来,创建证书签名请求。还需要设置证书的主题,并添加所有 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);

现在有两个选项

1. 当需要让证书颁发机构签名您的证书签名请求时,您必须使用请求数据。

QByteArray certificateSigningRequestData = csr.createRequest(key);

2. 当没有证书颁发机构时,您必须自签名请求。

QByteArray selfSignedCertificateData = csr.createSelfSignedCertificate(key);

文件

© 2024 The Qt Company Ltd. 包含在内的文档贡献的版权归各自所有者。此处提供的文档是根据发布的自由软件基金会条款许可的 GNU 自由文档许可版本 1.3。Qt 以及相应的标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。