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

QWebkit does not load from Url due to SslHandshakeFailedError

Scheduled Pinned Locked Moved Unsolved Qt WebKit
2 Posts 2 Posters 670 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 last edited by anshah
    #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.

    Ronel_qtmasterR 1 Reply Last reply
    0
    • A anshah

      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.

      Ronel_qtmasterR Offline
      Ronel_qtmasterR Offline
      Ronel_qtmaster
      wrote on 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