QT5.5.1 WebKit SSL

0

Witam piszę program przy pomocy QT 5.5.1 w IDE 3.6.0 Platforma Win10
Przy pomocy WebKit i mam błędy ładując stronę szyfrowaną SSL

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

Błędy mam na kilku stronach z grą np. https://pl.elvenar.com/
Wypluwa błąd i nic dalej nie ładuje.
Podstawowy projekt wygląda tak - to tylko szkic, minimum do działania.

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QNetworkReply>
#include <QSslError>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString url = ui->lineEdit->text();
    ui->webView->load(url);
    QSslConfiguration sslconf = QSslConfiguration::defaultConfiguration();
    QList<QSslCertificate> cert_list = sslconf.caCertificates();
    QList<QSslCertificate> cert_new = QSslCertificate::fromData("CaCertificates");
    cert_list += cert_new;

    sslconf.setCaCertificates(cert_list);
    sslconf.setProtocol(QSsl::AnyProtocol);
    QSslConfiguration::setDefaultConfiguration(sslconf);
    connect(ui->webView->page()->networkAccessManager(),
                SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError> & )),
                this,
                SLOT(handleSslErrors(QNetworkReply*, const QList<QSslError> & )));
}
void MainWindow::handleSslErrors(QNetworkReply* reply, const QList<QSslError> &errors)
{
    qDebug() << "handleSslErrors: ";
    foreach (QSslError e, errors)
    {
        qDebug() << "ssl error: " << e;
    }

    reply->ignoreSslErrors();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtWebKit/QtWebKit>
#include <QMessageBox>
#include <QWebElement>
#include <QWebFrame>



namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void handleSslErrors(QNetworkReply* reply, const QList<QSslError> &errors);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

.pro

#-------------------------------------------------
#
# Project created by QtCreator 2016-02-01T01:46:19
#
#-------------------------------------------------

QT       += core gui webkit webkitwidgets
QT       += network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = WebTest
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

Kod kompilowany pod Mac Os X - działa i wczytuję strony ssl, pod windowsem wczytuje wszystkie strony nie szyfrowane i tylko niektóre szyfrowane.
Proszę o pomoc w tej sprawie bo już ręce opadają.
Biblioteki mam w

C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll

Dodatkowo doinstalowałem
OpenSSL Win32
Dziękuje serdecznie za pomoc..
Pozdrawiam.

0

Te biblioteki (czyli openssl) muszą być widoczne w PATH podczas wykonania. Albo wrzuć je do katalogu z programem, ale dorzuć ten katalog do PATH.

0

Mam w zmiennych srodowiskowych w zmiennej path scieżkę do root oraz bin.
Mało tego dodałem też zmienną odpowiednią do pliku cfg.
Natomiast ssl mam zainstalowana light czy jakoś podobnie dla developerów.

Sprawdzałem u siebie przeglądarke Arora na qt4.5 i efekt ten sam.
Podkreśle że na ie działa i na safari bez problemu. Juz nie wiem co mogę wiecej sprawdzić.

0

Wszystko by było ekstra tylko stronka z plikami openssl http://www.slproweb.com skompilowanymi jest chyba przeciążona nie mogę się na nią wbić.
Może problemem u mnie jest to że instalowałem na kompie brata wersje openssl 32bity a system ma 64bit i na dodatek tego z tego co widzę kompiluje również do 64
ale gdy wrzucę w .pro

win64{
/biblioteka
}

to mi nie uwzględnia próbowałem również bez różnicy jaka platforma i dalej mam te same błędy :(

Zmienne środowiskowo w PATH mam podaną lokalizacje do C:/OpenSSL-Win32/bin
zmienną OPENSSL_CONF
C:\OpenSSL-Win32\bin\openssl.cfg

pliki

libeay32.dll
ssleay32.dll

mam w system32
:(

-----------EDIT----------
Panowie już jest wszystko ok, musiałem zainstalować wersje 64 bity i w path do niej dać ścieżkę oraz dodać scieżkę do configu.
Nie potrzebuje nawet dodawać niczego w .pro i aplikacja działa, podejrzewam że tylko na tym wind owsie :)

Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1