Seite 1 von 1

https mit eigenem Zertifikat und QNetworkRequest bzw. Reply

Verfasst: 26. Dezember 2010 14:27
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();