Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Set ssl configuration with certificates of QNetworkRequest does not work
QtWS25 Last Chance

Set ssl configuration with certificates of QNetworkRequest does not work

Scheduled Pinned Locked Moved General and Desktop
sslqnetworkrequestcertificate
1 Posts 1 Posters 2.6k 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.
  • R Offline
    R Offline
    RogerLai
    wrote on last edited by RogerLai
    #1

    Hello, I am using Qt 5.4.1 QtNetwork module. I want to trust a website with ssl certificate whose root CA is not in the list of system certificates of Mac OSX 10.10.3. But it seems to be not working at all, here is the code, does anyone has any idea or experience about it?

    import sys

    from PyQt4 import QtNetwork, QtCore, QtGui
    from PyQt4.QtCore import QObject, QFile, QRegExp
    from PyQt4.QtNetwork import QSslConfiguration, QSslCertificate, QSsl, QSslSocket

    appQt = QtGui.QApplication(sys.argv)

    def sslErrorHandler(reply, errorList):
    reply.ignoreSslErrors()
    for errorItem in errorList:
    print "ssl error ignored: %s" % errorItem.errorString()

    def slotReadyRead():
    print 'slotReadyRead'
    print reply.readAll()

    sslConfig = QSslConfiguration.defaultConfiguration()
    sslConfig.setProtocol(QSsl.TlsV1SslV3)
    sslConfig.setPeerVerifyDepth(1)
    sslConfig.setPeerVerifyMode(QSslSocket.VerifyPeer)
    qcerts = QSslCertificate.fromPath("/Users/rogerlai/Library/Application Support/FangCloudSync/cacert.pem", QSsl.Pem,
    QRegExp.Wildcard)

    sslConfig.setCaCertificates(qcerts)

    request = QtNetwork.QNetworkRequest(QtCore.QUrl("https://kyfw.12306.cn/otn/leftTicket/init"))
    request.setSslConfiguration(sslConfig)

    manager = QtNetwork.QNetworkAccessManager()
    QObject.connect(manager, QtCore.SIGNAL("sslErrors (QNetworkReply *, const QList<QSslError> &)"),
    sslErrorHandler)

    reply = manager.get(request)

    QObject.connect(reply, QtCore.SIGNAL("readyRead()"), slotReadyRead);

    appQt.exec_()

    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