1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
QFile sslCertificateFile("ssl/client_cert.pem");
QFile caCertificateFile("ssl/CA.pem");
QFile clientKeyFile("ssl/client.key");
QSslCertificate clientCertificate, caCertificate;
QSslConfiguration sslConfiguration;
QSslError error(QSslError::HostNameMismatch);
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
if ((clientCertificateFile.open(QIODevice::ReadOnly)) && (clientKeyFile.open(QIODevice::ReadOnly)) && (caCertificateFile.open(QIODevice::ReadOnly))) {
// Read certificates from file
QList<QSslCertificate> clientCertificateList = QSslCertificate::fromData(clientCertificateFile.readAll(), QSsl::Pem);
QList<QSslCertificate> caCertificateList = QSslCertificate::fromData(caCertificateFile.readAll(), QSsl::Pem);
clientCertificate = clientCertificateList.takeAt(0);
// Read key from file
QSslKey privateKey(&sslKeyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey , "passphrase");
sslConfiguration.QSslConfiguration::defaultConfiguration();
sslConfiguration.setLocalCertificate(sslCertificate);
sslConfiguration.setCaCertificates(caCertificateList);
sslConfiguration.setPrivateKey(privateKey);
sslConfiguration.setProtocol(QSsl::TlsV1_0);
} else {
QMessageBox::information(this, tr("HTTPS"), tr("Cannot open ssl files !"));
}
QUrl url("https://url/srv");
QNetworkRequest request(url);
request.setRawHeader("Content-Type", "application/binary-stream");
request.setSslConfiguration(sslConfiguration);
QNetworkAccessManager *networkManager = new QNetworkAccessManager();
QNetworkReply *reply = networkManager->post(request,post_data);
reply->ignoreSslErrors(expectedSslErrors);
connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreSslErrors(QList<QSslError>))); |
Partager