Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt WebKit
  4. QWebkit does not load from Url due to SslHandshakeFailedError
Forum Updated to NodeBB v4.3 + New Features

QWebkit does not load from Url due to SslHandshakeFailedError

Scheduled Pinned Locked Moved Unsolved Qt WebKit
2 Posts 2 Posters 701 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    anshah
    wrote on 9 Dec 2022, 21:56 last edited by anshah 12 Oct 2022, 01:12
    #1

    I'm seeing SslHandshakeFailedErrors in my Qt application when I try to load from a Microsoft Azure SAML url in QWebView on Ubuntu 22.04.
    The result is just a blank QWebView window.

    This same Azure SAML url was loading in Ubuntu 20.04.
    Okta SAML url works in 22.04.

    Here's a brief snippet of my setup:

    // Setup
    QWebView   *m_pView = new QWebView();
    MyNetworkAccessManager* m_pNetworkAccessManager = new MyNetworkAccessManager();
    m_pView->page()->setNetworkAccessManager(m_pNetworkAccessManager);
    
    // QWebView: Connect signals/slots
    connect(m_pView, SIGNAL(urlChanged(const QUrl&)),
            this,    SLOT(onUrlChanged(const QUrl&)));
    connect(m_pView, SIGNAL(loadFinished(bool)),
            this,    SLOT(onLoadFinished(bool)));
    
    // MyNetworkAccessManager: Connect signals/slots
    connect(m_pNetworkAccessManager, SIGNAL(finished(QNetworkReply*)),
            this,                     SLOT(onFinished(QNetworkReply*)));
    connect(m_pNetworkAccessManager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)),
            this,                     SLOT(onSslErrors(QNetworkReply*, const QList<QSslError>&)));
    
    // Load
    m_pView->page()->mainFrame()->load(m_url);
    

    As one of the forums mentioned I should modify the SSL configuration so I reimplemented QNetworkAccessManager:

    // Network Access Manager
    class MyNetworkAccessManager : public QNetworkAccessManager
    {
    
    public:
        MyNetworkAccessManager();
    
    protected:
        QNetworkReply* createRequest(Operation              op,
                                     const QNetworkRequest &req,
                                     QIODevice*             outgoingData = 0 );
    };
    
    // Network Access Manager
    MyNetworkAccessManager::MyNetworkAccessManager() {}
    
    QNetworkReply * MyNetworkAccessManager::createRequest(Operation              op,
                                                          const QNetworkRequest& req,
                                                          QIODevice*             outgoingData ){
        QSslConfiguration config = req.sslConfiguration();
        config.setPeerVerifyMode(QSslSocket::VerifyNone);
        config.setProtocol(QSsl::AnyProtocol);
        QNetworkRequest request(req);
        request.setSslConfiguration(config);
        return QNetworkAccessManager::createRequest(op, request, outgoingData);
    }
    

    After making these changes I'm still seeing the handshake errors in the onSslErrors slot and the QWebView window is still blank. Any help would be appreciated.

    R 1 Reply Last reply 5 Feb 2024, 20:29
    0
    • A anshah
      9 Dec 2022, 21:56

      I'm seeing SslHandshakeFailedErrors in my Qt application when I try to load from a Microsoft Azure SAML url in QWebView on Ubuntu 22.04.
      The result is just a blank QWebView window.

      This same Azure SAML url was loading in Ubuntu 20.04.
      Okta SAML url works in 22.04.

      Here's a brief snippet of my setup:

      // Setup
      QWebView   *m_pView = new QWebView();
      MyNetworkAccessManager* m_pNetworkAccessManager = new MyNetworkAccessManager();
      m_pView->page()->setNetworkAccessManager(m_pNetworkAccessManager);
      
      // QWebView: Connect signals/slots
      connect(m_pView, SIGNAL(urlChanged(const QUrl&)),
              this,    SLOT(onUrlChanged(const QUrl&)));
      connect(m_pView, SIGNAL(loadFinished(bool)),
              this,    SLOT(onLoadFinished(bool)));
      
      // MyNetworkAccessManager: Connect signals/slots
      connect(m_pNetworkAccessManager, SIGNAL(finished(QNetworkReply*)),
              this,                     SLOT(onFinished(QNetworkReply*)));
      connect(m_pNetworkAccessManager, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)),
              this,                     SLOT(onSslErrors(QNetworkReply*, const QList<QSslError>&)));
      
      // Load
      m_pView->page()->mainFrame()->load(m_url);
      

      As one of the forums mentioned I should modify the SSL configuration so I reimplemented QNetworkAccessManager:

      // Network Access Manager
      class MyNetworkAccessManager : public QNetworkAccessManager
      {
      
      public:
          MyNetworkAccessManager();
      
      protected:
          QNetworkReply* createRequest(Operation              op,
                                       const QNetworkRequest &req,
                                       QIODevice*             outgoingData = 0 );
      };
      
      // Network Access Manager
      MyNetworkAccessManager::MyNetworkAccessManager() {}
      
      QNetworkReply * MyNetworkAccessManager::createRequest(Operation              op,
                                                            const QNetworkRequest& req,
                                                            QIODevice*             outgoingData ){
          QSslConfiguration config = req.sslConfiguration();
          config.setPeerVerifyMode(QSslSocket::VerifyNone);
          config.setProtocol(QSsl::AnyProtocol);
          QNetworkRequest request(req);
          request.setSslConfiguration(config);
          return QNetworkAccessManager::createRequest(op, request, outgoingData);
      }
      

      After making these changes I'm still seeing the handshake errors in the onSslErrors slot and the QWebView window is still blank. Any help would be appreciated.

      R Offline
      R Offline
      Ronel_qtmaster
      wrote on 5 Feb 2024, 20:29 last edited by
      #2

      @anshah it is simple, just ignore ssl errors and continue

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved