https mit eigenem Zertifikat und QNetworkRequest bzw. Reply

Alles rund um die Programmierung mit Qt
Antworten
pioneer_01
Beiträge: 4
Registriert: 26. Dezember 2010 12:07

https mit eigenem Zertifikat und QNetworkRequest bzw. Reply

Beitrag von pioneer_01 »

Hallo,

nach langer erfolgloser Suche möchte ich es nun hier im Forum versuchen. Ich möchte einen Login auf einer Internetseite mittels QNetworkRequest bzw. Manager und Reply durchführen. Auf meinem eigenen Server funktioniert das Ausfüllen eines einfachen html Formulars bereits einwandfrei, allerdings handelt es sich bei dem betreffenden Server um eine https URL mit eigenem Zertifikat. Ich weiß nun nicht, wie ich dieses Zertifikat herunterladen muss, bzw. wie ich den Request bzw. Reply damit ver- und entschlüsseln muss. Ich habe versucht das Zertifikat mit einem Browser herunterzuladen und es dann dem Reqest zu übergeben:

Code: Alles auswählen

  QNetworkAccessManager* nwam = new QNetworkAccessManager(this);

  QNetworkRequest request(QUrl("https://blablabla.at"));
  request.setRawHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
  request.setRawHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  request.setRawHeader("Accept-Language","en-US");
  request.setRawHeader("Accept-Encoding","gzip,deflate");
  request.setRawHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
  request.setRawHeader("Keep-Alive","115");
  request.setRawHeader("Connection","keep-alive");
  request.setRawHeader("Cookie","bnd_chat_aktiv=585; chat_on_off=1; base_ID=14008; Chat_Session=b57d9ca8f5; PHPSESSID=474c3c92e92fdcedaab3203f9a86157b");
  request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
  request.setHeader(QNetworkRequest::ContentLengthHeader,"44");

  QSslConfiguration config;
  QList<QSslCertificate> list;
  foreach (const QSslCertificate &cert, QSslCertificate::fromPath("/home/user/development/desktop-build-desktop/cert.pem", QSsl::Pem, QRegExp::Wildcard))
  {
      qDebug() << cert.issuerInfo(QSslCertificate::Organization);
      list.push_back(cert);
  }
  config.setCaCertificates(list);

  request.setSslConfiguration(config);

  QByteArray data;
  QUrl params;


  params.addQueryItem("anmelden","Anmelden");
  params.addQueryItem("login","user");
  params.addQueryItem("password","password");

  data.append(params.toString());
  data.remove(0,1);


  // Reply
  reply_ = nwam->get(request);

  QSslConfiguration config1;
  QList<QSslCertificate> list1;
  foreach (const QSslCertificate &cert1, QSslCertificate::fromPath("/home/user/development/desktop-build-desktop/cert.pem", QSsl::Pem, QRegExp::Wildcard))
  {
      qDebug() << cert1.issuerInfo(QSslCertificate::Organization);
      list1.push_back(cert1);
  }
  config1.setCaCertificates(list1);
  reply_->setSslConfiguration(config1);
  reply_->ignoreSslErrors();
Antworten