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. QSslSocket how to dump an expired certificate?
Forum Updated to NodeBB v4.3 + New Features

QSslSocket how to dump an expired certificate?

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 1.2k Views 2 Watching
  • 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.
  • mbruelM Offline
    mbruelM Offline
    mbruel
    wrote on last edited by
    #2

    well I've dumped both local and peer certificate instead of the one attached to the QSslError:

           ostream << "SSL Peer Certificate: \n" << static_cast<QSslSocket*>(iSocket)->peerCertificate().toText();
           ostream << "SSL Local Certificate: \n" << static_cast<QSslSocket*>(iSocket)->localCertificate().toText();
    

    But they don't look expired...

    SSL Peer Certificate: 
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                04:66:b3:fb:70:06:33:7d:f8:6c:d8:d5:2d:7a:74:f7:68:87
        Signature Algorithm: sha256WithRSAEncryption
            Issuer: C=US, O=Let's Encrypt, CN=R3
            Validity
                Not Before: Sep 27 15:21:15 2021 GMT
                Not After : Dec 26 15:21:14 2021 GMT
    ...
    
    SSL Local Certificate: 
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                f2:e7:4b:2c:57:fb:87:14
        Signature Algorithm: sha256WithRSAEncryption
            Issuer: C=FR, ST=Some-State, L=Paris, O=XXXX
            Validity
                Not Before: Dec  2 21:50:15 2015 GMT
                Not After : Nov 29 21:50:15 2025 GMT
    ...
    

    any idea why I got this QSslError::CertificateExpired ?

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #3

      Hi,

      Did you check the intermediate certificates ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • mbruelM Offline
        mbruelM Offline
        mbruel
        wrote on last edited by
        #4

        I'm not an expert on SSL handshake... I thought there was just one certificate each side for all the negociation.
        How can I print them (intermediate ones) and find out the one that is expired so I could report it to the provider (server)?
        That's a shame that the certificate linked to the QSslError is empty...

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #5

          You should use the OpenSSL command directly for that.

          See this stack overflow answer to see how to do it.

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • mbruelM Offline
            mbruelM Offline
            mbruel
            wrote on last edited by
            #6

            ok thanks,
            following your link I managed using openssl to get twice the same certificate and still the same validity dates:

            Validity
                        Not Before: Sep 27 15:21:15 2021 GMT
                        Not After : Dec 26 15:21:14 2021 GMT
            

            still don't understand why Qt raises me a QSslError::CertificateExpired... :$

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #7

              Did you get the full chains of certificates up to the CA ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              mbruelM 1 Reply Last reply
              0
              • SGaistS SGaist

                Did you get the full chains of certificates up to the CA ?

                mbruelM Offline
                mbruelM Offline
                mbruel
                wrote on last edited by
                #8

                @SGaist not sure how to do it. I've tried several commands from your link but I ended up with just one certificate.
                If you want to give it a try I'm targetting news.usenetserver.com:563
                echo "" | openssl s_client -connect news.usenetserver.com:563 -prexit 2>/dev/null gives me twice the same certificate.
                I got the full details (validity dates) using echo | openssl s_client -servername news.usenetserver.com -connect news.usenetserver.com:563 2>/dev/null | openssl x509 -text

                Pablo J. RoginaP 1 Reply Last reply
                0
                • mbruelM mbruel

                  Hi,
                  a server I'm connecting to seems to have an expired certificate.

                  Here is my code to handle it and continue the connection:

                  void Connection::onSslErrors(const QList<QSslError> &errors){
                      QTextStream &ostream = NntpProxy::acquireLog(iLogPrefix);
                      ostream << "Error SSL Socket:\n";
                      for(int i=0;i<errors.size();i++)
                          ostream << "\t- #" << errors[i].error() << " : " <<  errors[i].errorString() << "\n";
                      NntpProxy::releaseLog();
                  
                      if (errors.size() == 1 && errors.first().error() == QSslError::CertificateExpired){
                          static_cast<QSslSocket*>(iSocket)->ignoreSslErrors();
                          QTextStream &ostream = NntpProxy::acquireLog(iLogPrefix);
                          ostream << "Ignored SSL Certificate:\n";
                          ostream << errors.first().certificate().toText();
                          NntpProxy::releaseLog();
                      }
                      else
                          emit socketError("SSL error...");
                  }
                  

                  I'm getting this log:

                  [2021/10/19 22:44:14] [Thread 0x7fe6d8f17700] NntpConnection[13] Serv[0] Error SSL Socket:
                          - #6 : The certificate has expired
                  [2021/10/19 22:44:14] [Thread 0x7fe6d8f17700] NntpConnection[13] Serv[0] Ignored SSL Certificate:
                  
                  
                  

                  So the certificate is not dumped, I get nothing with QSslError::certificate().toText()

                  Where would be a good place and how can I dump the SSL certificate?

                  jeremy_kJ Offline
                  jeremy_kJ Offline
                  jeremy_k
                  wrote on last edited by
                  #9

                  @mbruel said in QSslSocket how to dump an expired certificate?:

                  Hi,
                  a server I'm connecting to seems to have an expired certificate.

                  Here is my code to handle it and continue the connection:

                  void Connection::onSslErrors(const QList<QSslError> &errors){
                      QTextStream &ostream = NntpProxy::acquireLog(iLogPrefix);
                      ostream << "Error SSL Socket:\n";
                      for(int i=0;i<errors.size();i++)
                          ostream << "\t- #" << errors[i].error() << " : " <<  errors[i].errorString() << "\n";
                      NntpProxy::releaseLog();
                  
                      if (errors.size() == 1 && errors.first().error() == QSslError::CertificateExpired){
                  

                  So the certificate is not dumped, I get nothing with QSslError::certificate().toText()

                  The if clause that calls QSslCertificate::toText() isn't taken because there are two certificates (based on the posted output), but the code checks errors().size() == 1.

                  Where would be a good place and how can I dump the SSL certificate?

                  Have you tried QSslSocket::peerCertificateChain rather than QSslSocket::peerCertificate?

                  Asking a question about code? http://eel.is/iso-c++/testcase/

                  mbruelM 1 Reply Last reply
                  2
                  • mbruelM mbruel

                    @SGaist not sure how to do it. I've tried several commands from your link but I ended up with just one certificate.
                    If you want to give it a try I'm targetting news.usenetserver.com:563
                    echo "" | openssl s_client -connect news.usenetserver.com:563 -prexit 2>/dev/null gives me twice the same certificate.
                    I got the full details (validity dates) using echo | openssl s_client -servername news.usenetserver.com -connect news.usenetserver.com:563 2>/dev/null | openssl x509 -text

                    Pablo J. RoginaP Offline
                    Pablo J. RoginaP Offline
                    Pablo J. Rogina
                    wrote on last edited by Pablo J. Rogina
                    #10

                    Check certificate chain:

                    $ openssl s_client -showcerts -verify 5 -connect news.usenetserver.com:563 < /dev/null
                    

                    At the top, you'll see that there are 3 certificates involved, listed from root to your desired target:

                    depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
                    verify return:1
                    depth=1 C = US, O = Let's Encrypt, CN = R3
                    verify return:1
                    depth=0 CN = usenetserver.com
                    verify return:1
                    

                    In the command output you'll have also the 3 certificates dumped. If you copy and save such information to text files, removing the EOL chars (just to have a whole line between markers ----- BEGIN CERTIFICATE ------ and ----- END CERTIFICATE ------ you can have details from each certificate:

                    $ openssl x509 -inform pem -in usenetserver.cer -noout -text | grep -i after
                                Not After : Dec 26 15:21:14 2021 GMT
                    $ openssl x509 -inform pem -in lets_encrypt_R3.cer -noout -text | grep -i after
                                Not After : Sep 15 16:00:00 2025 GMT
                    $ openssl x509 -inform pem -in lets_encrypt_Root.cer -noout -text | grep -i after
                                Not After : Sep 30 18:14:03 2024 GMT
                    

                    So yes, none of the certificates in the chain seem to be expired.
                    You may want to check Qt source code (I haven't) just in case the current code is not able to follow a chain of certificates

                    Upvote the answer(s) that helped you solve the issue
                    Use "Topic Tools" button to mark your post as Solved
                    Add screenshots via postimage.org
                    Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

                    1 Reply Last reply
                    2
                    • jeremy_kJ jeremy_k

                      @mbruel said in QSslSocket how to dump an expired certificate?:

                      Hi,
                      a server I'm connecting to seems to have an expired certificate.

                      Here is my code to handle it and continue the connection:

                      void Connection::onSslErrors(const QList<QSslError> &errors){
                          QTextStream &ostream = NntpProxy::acquireLog(iLogPrefix);
                          ostream << "Error SSL Socket:\n";
                          for(int i=0;i<errors.size();i++)
                              ostream << "\t- #" << errors[i].error() << " : " <<  errors[i].errorString() << "\n";
                          NntpProxy::releaseLog();
                      
                          if (errors.size() == 1 && errors.first().error() == QSslError::CertificateExpired){
                      

                      So the certificate is not dumped, I get nothing with QSslError::certificate().toText()

                      The if clause that calls QSslCertificate::toText() isn't taken because there are two certificates (based on the posted output), but the code checks errors().size() == 1.

                      Where would be a good place and how can I dump the SSL certificate?

                      Have you tried QSslSocket::peerCertificateChain rather than QSslSocket::peerCertificate?

                      mbruelM Offline
                      mbruelM Offline
                      mbruel
                      wrote on last edited by
                      #11

                      @jeremy_k said in QSslSocket how to dump an expired certificate?:

                      Have you tried QSslSocket::peerCertificateChain rather than QSslSocket::peerCertificate?

                      No I didn't but just tried. I made a simple project: testSslSock
                      The syntax is simple 3 args to connect to a Host with SSL.
                      In fact, I'm getting the same QSslError::CertificateExpired whatever the host...

                      I've to precise that this is happening on Qt v5.8.0 with QMake v3.1 and libssl.so.1.0.0. It's NOT happening on my normal env with Qt5.15 and libssl 1.1.

                      This wasn't happening before... Like one or 2 months ago...
                      The code didn't change and wasn't recompile.
                      This error just started to happen.
                      Any idea?
                      (PS: it's an app running on an old Debian 8.11)

                      cf my output:

                      $ ./testSslSock news.usenetserver.com 563 1
                      > Starting connection to news.usenetserver.com:563
                      > Connected to server
                      > Starting SSL Handshake
                      Error SSL Socket:
                      	- #6 : The certificate has expired
                      Ignored SSL Certificate:
                      nb Certificates: 3
                      Certificate:
                          Data:
                              Version: 3 (0x2)
                              Serial Number:
                                  04:66:b3:fb:70:06:33:7d:f8:6c:d8:d5:2d:7a:74:f7:68:87
                          Signature Algorithm: sha256WithRSAEncryption
                              Issuer: C=US, O=Let's Encrypt, CN=R3
                              Validity
                                  Not Before: Sep 27 15:21:15 2021 GMT
                                  Not After : Dec 26 15:21:14 2021 GMT
                              Subject: CN=usenetserver.com
                              Subject Public Key Info:
                                  Public Key Algorithm: rsaEncryption
                                      Public-Key: (4096 bit)
                                      Modulus:
                                          00:b7:ec:24:29:a9:36:a7:f0:c5:e2:f1:30:23:79:
                                          29:e0:24:71:e0:d2:4d:90:92:0d:cb:3e:76:f8:3e:
                                          04:ae:3f:45:ea:f3:9f:b9:44:b0:aa:9b:85:2f:37:
                                          b0:e0:24:9c:97:1b:da:48:b0:b8:4c:93:48:9d:f0:
                                          bc:c0:17:42:f8:1a:79:02:e7:16:53:9a:80:c3:aa:
                                          8c:34:9f:5a:0a:72:c5:5b:32:9d:e0:41:b8:65:c6:
                                          62:d3:6c:d0:ad:e8:c5:32:4b:f3:91:41:5f:df:95:
                                          0d:3b:e3:cb:8d:0a:bc:f4:1c:94:d7:4c:83:96:17:
                                          62:89:1c:55:d0:b0:90:31:39:f3:60:6a:74:9f:77:
                                          35:ae:b4:f6:79:39:68:98:2d:f7:c6:76:d4:a4:4c:
                                          a4:e4:e9:78:7c:dc:0f:f0:8b:31:9b:99:4e:bd:92:
                                          c7:64:97:2b:09:0a:33:ad:b0:c0:8d:a0:6a:7a:3e:
                                          34:5a:b8:d9:04:93:3a:1c:7f:fc:a2:6d:9b:8e:34:
                                          ee:2d:a6:e8:ee:59:af:5d:56:71:b2:21:75:84:99:
                                          d9:37:e2:33:67:fd:b0:76:7f:db:c6:cc:3a:09:1b:
                                          01:ac:b4:27:b6:1c:c8:38:4a:21:79:cd:26:e8:5c:
                                          08:43:fb:1a:61:40:1d:f7:bb:83:4c:24:a9:7f:88:
                                          00:24:fb:16:51:33:48:50:43:5e:95:e3:15:29:95:
                                          b6:4f:f6:99:ea:20:97:fb:42:ad:76:b5:57:62:18:
                                          57:89:5c:5c:cf:61:09:b6:e3:4b:98:1b:3b:de:e0:
                                          c5:09:72:fe:4c:f4:e5:f0:0d:b9:ba:04:0e:95:3e:
                                          83:81:90:9b:ee:ba:83:84:7d:a1:7c:35:bd:c9:23:
                                          99:ab:cb:f2:76:31:3e:14:38:05:03:c9:f8:c6:8c:
                                          88:e1:6b:c6:2d:46:65:e6:43:96:ec:90:e6:54:24:
                                          e8:cf:d7:d9:ee:b5:66:92:6c:8b:4d:0b:b1:db:10:
                                          71:b2:8f:ce:03:04:71:ed:ea:c2:0f:76:bd:c9:1e:
                                          e1:89:b3:76:2c:c0:08:9b:bd:95:f1:ce:ce:35:8a:
                                          4b:83:50:60:6c:5a:e5:80:8d:84:e0:2d:1a:20:67:
                                          15:7a:96:b3:8a:81:e9:ec:ed:6e:49:8d:8f:0c:44:
                                          bf:07:2c:9e:7e:72:b9:f7:9a:69:ed:1e:47:75:76:
                                          f8:db:56:7c:00:3e:33:cc:cf:d1:a6:3e:74:59:ef:
                                          b6:94:24:f0:30:37:f4:b1:25:4d:0a:69:c9:1b:b7:
                                          f0:9c:ee:db:a4:2f:31:5e:51:c3:ad:ab:dd:01:07:
                                          a0:3e:43:9e:d4:b3:d8:aa:e4:45:d7:76:64:e0:f8:
                                          71:68:b1
                                      Exponent: 65537 (0x10001)
                              X509v3 extensions:
                                  X509v3 Key Usage: critical
                                      Digital Signature, Key Encipherment
                                  X509v3 Extended Key Usage: 
                                      TLS Web Server Authentication, TLS Web Client Authentication
                                  X509v3 Basic Constraints: critical
                                      CA:FALSE
                                  X509v3 Subject Key Identifier: 
                                      11:EF:B4:08:87:43:98:9F:81:17:0A:B6:CB:67:5B:A5:3F:3E:33:04
                                  X509v3 Authority Key Identifier: 
                                      keyid:14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
                      
                                  Authority Information Access: 
                                      OCSP - URI:http://r3.o.lencr.org
                                      CA Issuers - URI:http://r3.i.lencr.org/
                      
                                  X509v3 Subject Alternative Name: 
                                      DNS:*.ams.usenetserver.com, DNS:*.eu.usenetserver.com, DNS:*.fr7.usenetserver.com, DNS:*.iad.usenetserver.com, DNS:*.usenetserver.com, DNS:usenetserver.com
                                  X509v3 Certificate Policies: 
                                      Policy: 2.23.140.1.2.1
                                      Policy: 1.3.6.1.4.1.44947.1.1.1
                                        CPS: http://cps.letsencrypt.org
                      
                                  1.3.6.1.4.1.11129.2.4.2: 
                                      ......v.D.e......@....(.......1.?.3........|(.|v.....G0E. ....p.......c....+yd,...z.2.iN...!........%t|..%TU.:.h........l..E..w.}>.....Uh$....R.y+..x...j.h.~".....|(.}......H0F.!...n.7...@Jz..K..... .........YA..!...1.....x....rT.>.s#7...y.......
                          Signature Algorithm: sha256WithRSAEncryption
                               77:4c:78:16:c3:9d:5b:31:4b:47:06:63:30:98:c4:0e:e1:09:
                               d7:39:74:b1:57:fa:27:03:74:73:3a:81:52:b7:41:1a:7c:d6:
                               7a:b4:e1:7c:cf:cd:0a:79:46:d0:21:6a:bb:49:6d:97:df:43:
                               e4:b0:ac:dc:62:ea:ed:0a:e6:b8:5c:df:64:34:ba:fb:f5:e4:
                               51:f4:4a:ad:eb:0c:67:c6:04:e1:84:54:6a:3d:77:3a:bb:64:
                               b4:40:3a:33:ca:bd:6e:7d:11:06:41:86:5e:df:8a:ae:d4:ee:
                               d2:0c:e7:f8:d8:e3:eb:6a:c2:78:fd:df:f4:67:96:68:dd:51:
                               ef:96:c3:ec:7c:7c:b0:85:c7:c2:97:21:34:34:95:fd:f8:91:
                               5f:7b:8b:d8:00:0b:bc:a9:8d:d4:87:5f:68:f3:26:ac:26:eb:
                               b5:71:8d:0d:cc:c5:fe:72:fa:e2:c1:95:3c:ed:57:8c:cb:e9:
                               b5:51:ff:35:f1:46:2e:32:9b:eb:8e:6c:f4:93:66:bf:67:44:
                               02:b9:bb:14:1a:dc:4b:e0:25:1a:b7:f9:f4:9c:96:90:6c:c1:
                               bb:62:54:9c:eb:86:b0:db:71:16:31:76:bc:7c:4e:9c:33:12:
                               af:49:7d:97:57:7e:4b:41:b6:98:db:12:d4:0c:17:2a:ae:6b:
                               a9:13:03:a4
                      Certificate:
                          Data:
                              Version: 3 (0x2)
                              Serial Number:
                                  91:2b:08:4a:cf:0c:18:a7:53:f6:d6:2e:25:a7:5f:5a
                          Signature Algorithm: sha256WithRSAEncryption
                              Issuer: C=US, O=Internet Security Research Group, CN=ISRG Root X1
                              Validity
                                  Not Before: Sep  4 00:00:00 2020 GMT
                                  Not After : Sep 15 16:00:00 2025 GMT
                              Subject: C=US, O=Let's Encrypt, CN=R3
                              Subject Public Key Info:
                                  Public Key Algorithm: rsaEncryption
                                      Public-Key: (2048 bit)
                                      Modulus:
                                          00:bb:02:15:28:cc:f6:a0:94:d3:0f:12:ec:8d:55:
                                          92:c3:f8:82:f1:99:a6:7a:42:88:a7:5d:26:aa:b5:
                                          2b:b9:c5:4c:b1:af:8e:6b:f9:75:c8:a3:d7:0f:47:
                                          94:14:55:35:57:8c:9e:a8:a2:39:19:f5:82:3c:42:
                                          a9:4e:6e:f5:3b:c3:2e:db:8d:c0:b0:5c:f3:59:38:
                                          e7:ed:cf:69:f0:5a:0b:1b:be:c0:94:24:25:87:fa:
                                          37:71:b3:13:e7:1c:ac:e1:9b:ef:db:e4:3b:45:52:
                                          45:96:a9:c1:53:ce:34:c8:52:ee:b5:ae:ed:8f:de:
                                          60:70:e2:a5:54:ab:b6:6d:0e:97:a5:40:34:6b:2b:
                                          d3:bc:66:eb:66:34:7c:fa:6b:8b:8f:57:29:99:f8:
                                          30:17:5d:ba:72:6f:fb:81:c5:ad:d2:86:58:3d:17:
                                          c7:e7:09:bb:f1:2b:f7:86:dc:c1:da:71:5d:d4:46:
                                          e3:cc:ad:25:c1:88:bc:60:67:75:66:b3:f1:18:f7:
                                          a2:5c:e6:53:ff:3a:88:b6:47:a5:ff:13:18:ea:98:
                                          09:77:3f:9d:53:f9:cf:01:e5:f5:a6:70:17:14:af:
                                          63:a4:ff:99:b3:93:9d:dc:53:a7:06:fe:48:85:1d:
                                          a1:69:ae:25:75:bb:13:cc:52:03:f5:ed:51:a1:8b:
                                          db:15
                                      Exponent: 65537 (0x10001)
                              X509v3 extensions:
                                  X509v3 Key Usage: critical
                                      Digital Signature, Certificate Sign, CRL Sign
                                  X509v3 Extended Key Usage: 
                                      TLS Web Client Authentication, TLS Web Server Authentication
                                  X509v3 Basic Constraints: critical
                                      CA:TRUE, pathlen:0
                                  X509v3 Subject Key Identifier: 
                                      14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6
                                  X509v3 Authority Key Identifier: 
                                      keyid:79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
                      
                                  Authority Information Access: 
                                      CA Issuers - URI:http://x1.i.lencr.org/
                      
                                  X509v3 CRL Distribution Points: 
                      
                                      Full Name:
                                        URI:http://x1.c.lencr.org/
                      
                                  X509v3 Certificate Policies: 
                                      Policy: 2.23.140.1.2.1
                                      Policy: 1.3.6.1.4.1.44947.1.1.1
                      
                          Signature Algorithm: sha256WithRSAEncryption
                               85:ca:4e:47:3e:a3:f7:85:44:85:bc:d5:67:78:b2:98:63:ad:
                               75:4d:1e:96:3d:33:65:72:54:2d:81:a0:ea:c3:ed:f8:20:bf:
                               5f:cc:b7:70:00:b7:6e:3b:f6:5e:94:de:e4:20:9f:a6:ef:8b:
                               b2:03:e7:a2:b5:16:3c:91:ce:b4:ed:39:02:e7:7c:25:8a:47:
                               e6:65:6e:3f:46:f4:d9:f0:ce:94:2b:ee:54:ce:12:bc:8c:27:
                               4b:b8:c1:98:2f:a2:af:cd:71:91:4a:08:b7:c8:b8:23:7b:04:
                               2d:08:f9:08:57:3e:83:d9:04:33:0a:47:21:78:09:82:27:c3:
                               2a:c8:9b:b9:ce:5c:f2:64:c8:c0:be:79:c0:4f:8e:6d:44:0c:
                               5e:92:bb:2e:f7:8b:10:e1:e8:1d:44:29:db:59:20:ed:63:b9:
                               21:f8:12:26:94:93:57:a0:1d:65:04:c1:0a:22:ae:10:0d:43:
                               97:a1:18:1f:7e:e0:e0:86:37:b5:5a:b1:bd:30:bf:87:6e:2b:
                               2a:ff:21:4e:1b:05:c3:f5:18:97:f0:5e:ac:c3:a5:b8:6a:f0:
                               2e:bc:3b:33:b9:ee:4b:de:cc:fc:e4:af:84:0b:86:3f:c0:55:
                               43:36:f6:68:e1:36:17:6a:8e:99:d1:ff:a5:40:a7:34:b7:c0:
                               d0:63:39:35:39:75:6e:f2:ba:76:c8:93:02:e9:a9:4b:6c:17:
                               ce:0c:02:d9:bd:81:fb:9f:b7:68:d4:06:65:b3:82:3d:77:53:
                               f8:8e:79:03:ad:0a:31:07:75:2a:43:d8:55:97:72:c4:29:0e:
                               f7:c4:5d:4e:c8:ae:46:84:30:d7:f2:85:5f:18:a1:79:bb:e7:
                               5e:70:8b:07:e1:86:93:c3:b9:8f:dc:61:71:25:2a:af:df:ed:
                               25:50:52:68:8b:92:dc:e5:d6:b5:e3:da:7d:d0:87:6c:84:21:
                               31:ae:82:f5:fb:b9:ab:c8:89:17:3d:e1:4c:e5:38:0e:f6:bd:
                               2b:bd:96:81:14:eb:d5:db:3d:20:a7:7e:59:d3:e2:f8:58:f9:
                               5b:b8:48:cd:fe:5c:4f:16:29:fe:1e:55:23:af:c8:11:b0:8d:
                               ea:7c:93:90:17:2f:fd:ac:a2:09:47:46:3f:f0:e9:b0:b7:ff:
                               28:4d:68:32:d6:67:5e:1e:69:a3:93:b8:f5:9d:8b:2f:0b:d2:
                               52:43:a6:6f:32:57:65:4d:32:81:df:38:53:85:5d:7e:5d:66:
                               29:ea:b8:dd:e4:95:b5:cd:b5:56:12:42:cd:c4:4e:c6:25:38:
                               44:50:6d:ec:ce:00:55:18:fe:e9:49:64:d4:4e:ca:97:9c:b4:
                               5b:c0:73:a8:ab:b8:47:c2
                      Certificate:
                          Data:
                              Version: 3 (0x2)
                              Serial Number:
                                  40:01:77:21:37:d4:e9:42:b8:ee:76:aa:3c:64:0a:b7
                          Signature Algorithm: sha256WithRSAEncryption
                              Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
                              Validity
                                  Not Before: Jan 20 19:14:03 2021 GMT
                                  Not After : Sep 30 18:14:03 2024 GMT
                              Subject: C=US, O=Internet Security Research Group, CN=ISRG Root X1
                              Subject Public Key Info:
                                  Public Key Algorithm: rsaEncryption
                                      Public-Key: (4096 bit)
                                      Modulus:
                                          00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c:
                                          87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7:
                                          75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86:
                                          6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31:
                                          9b:21:7e:d1:33:3c:ba:48:f5:dd:79:df:b3:b8:ff:
                                          12:f1:21:9a:4b:c1:8a:86:71:69:4a:66:66:6c:8f:
                                          7e:3c:70:bf:ad:29:22:06:f3:e4:c0:e6:80:ae:e2:
                                          4b:8f:b7:99:7e:94:03:9f:d3:47:97:7c:99:48:23:
                                          53:e8:38:ae:4f:0a:6f:83:2e:d1:49:57:8c:80:74:
                                          b6:da:2f:d0:38:8d:7b:03:70:21:1b:75:f2:30:3c:
                                          fa:8f:ae:dd:da:63:ab:eb:16:4f:c2:8e:11:4b:7e:
                                          cf:0b:e8:ff:b5:77:2e:f4:b2:7b:4a:e0:4c:12:25:
                                          0c:70:8d:03:29:a0:e1:53:24:ec:13:d9:ee:19:bf:
                                          10:b3:4a:8c:3f:89:a3:61:51:de:ac:87:07:94:f4:
                                          63:71:ec:2e:e2:6f:5b:98:81:e1:89:5c:34:79:6c:
                                          76:ef:3b:90:62:79:e6:db:a4:9a:2f:26:c5:d0:10:
                                          e1:0e:de:d9:10:8e:16:fb:b7:f7:a8:f7:c7:e5:02:
                                          07:98:8f:36:08:95:e7:e2:37:96:0d:36:75:9e:fb:
                                          0e:72:b1:1d:9b:bc:03:f9:49:05:d8:81:dd:05:b4:
                                          2a:d6:41:e9:ac:01:76:95:0a:0f:d8:df:d5:bd:12:
                                          1f:35:2f:28:17:6c:d2:98:c1:a8:09:64:77:6e:47:
                                          37:ba:ce:ac:59:5e:68:9d:7f:72:d6:89:c5:06:41:
                                          29:3e:59:3e:dd:26:f5:24:c9:11:a7:5a:a3:4c:40:
                                          1f:46:a1:99:b5:a7:3a:51:6e:86:3b:9e:7d:72:a7:
                                          12:05:78:59:ed:3e:51:78:15:0b:03:8f:8d:d0:2f:
                                          05:b2:3e:7b:4a:1c:4b:73:05:12:fc:c6:ea:e0:50:
                                          13:7c:43:93:74:b3:ca:74:e7:8e:1f:01:08:d0:30:
                                          d4:5b:71:36:b4:07:ba:c1:30:30:5c:48:b7:82:3b:
                                          98:a6:7d:60:8a:a2:a3:29:82:cc:ba:bd:83:04:1b:
                                          a2:83:03:41:a1:d6:05:f1:1b:c2:b6:f0:a8:7c:86:
                                          3b:46:a8:48:2a:88:dc:76:9a:76:bf:1f:6a:a5:3d:
                                          19:8f:eb:38:f3:64:de:c8:2b:0d:0a:28:ff:f7:db:
                                          e2:15:42:d4:22:d0:27:5d:e1:79:fe:18:e7:70:88:
                                          ad:4e:e6:d9:8b:3a:c6:dd:27:51:6e:ff:bc:64:f5:
                                          33:43:4f
                                      Exponent: 65537 (0x10001)
                              X509v3 extensions:
                                  X509v3 Basic Constraints: critical
                                      CA:TRUE
                                  X509v3 Key Usage: critical
                                      Certificate Sign, CRL Sign
                                  Authority Information Access: 
                                      CA Issuers - URI:http://apps.identrust.com/roots/dstrootcax3.p7c
                      
                                  X509v3 Authority Key Identifier: 
                                      keyid:C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10
                      
                                  X509v3 Certificate Policies: 
                                      Policy: 2.23.140.1.2.1
                                      Policy: 1.3.6.1.4.1.44947.1.1.1
                                        CPS: http://cps.root-x1.letsencrypt.org
                      
                                  X509v3 CRL Distribution Points: 
                      
                                      Full Name:
                                        URI:http://crl.identrust.com/DSTROOTCAX3CRL.crl
                      
                                  X509v3 Subject Key Identifier: 
                                      79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E
                          Signature Algorithm: sha256WithRSAEncryption
                               0a:73:00:6c:96:6e:ff:0e:52:d0:ae:dd:8c:e7:5a:06:ad:2f:
                               a8:e3:8f:bf:c9:0a:03:15:50:c2:e5:6c:42:bb:6f:9b:f4:b4:
                               4f:c2:44:88:08:75:cc:eb:07:9b:14:62:6e:78:de:ec:27:ba:
                               39:5c:f5:a2:a1:6e:56:94:70:10:53:b1:bb:e4:af:d0:a2:c3:
                               2b:01:d4:96:f4:c5:20:35:33:f9:d8:61:36:e0:71:8d:b4:b8:
                               b5:aa:82:45:95:c0:f2:a9:23:28:e7:d6:a1:cb:67:08:da:a0:
                               43:2c:aa:1b:93:1f:c9:de:f5:ab:69:5d:13:f5:5b:86:58:22:
                               ca:4d:55:e4:70:67:6d:c2:57:c5:46:39:41:cf:8a:58:83:58:
                               6d:99:fe:57:e8:36:0e:f0:0e:23:aa:fd:88:97:d0:e3:5c:0e:
                               94:49:b5:b5:17:35:d2:2e:bf:4e:85:ef:18:e0:85:92:eb:06:
                               3b:6c:29:23:09:60:dc:45:02:4c:12:18:3b:e9:fb:0e:de:dc:
                               44:f8:58:98:ae:ea:bd:45:45:a1:88:5d:66:ca:fe:10:e9:6f:
                               82:c8:11:42:0d:fb:e9:ec:e3:86:00:de:9d:10:e3:38:fa:a4:
                               7d:b1:d8:e8:49:82:84:06:9b:2b:e8:6b:4f:01:0c:38:77:2e:
                               f9:dd:e7:39
                      > Socket encrypted!
                      > Disconnected
                      
                      1 Reply Last reply
                      0
                      • jeremy_kJ Offline
                        jeremy_kJ Offline
                        jeremy_k
                        wrote on last edited by
                        #12

                        https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/

                        DST Root CA X3 will expire on September 30, 2021. That means those older devices that don’t trust ISRG Root X1 will start getting certificate warnings when visiting sites that use Let’s Encrypt certificates.

                        Qt 5.8 with OpenSSL 1.0 qualifies as an older device in this case.

                        Asking a question about code? http://eel.is/iso-c++/testcase/

                        1 Reply Last reply
                        1
                        • mbruelM Offline
                          mbruelM Offline
                          mbruel
                          wrote on last edited by
                          #13

                          @jeremy_k said in QSslSocket how to dump an expired certificate?:

                          0, 2021. That means those older d

                          hum thanks for the link.

                          What should you do? For most people, nothing at all! We’ve set up our certificate issuance so your web site will do the right thing in most cases, favoring broad compatibility. If you provide an API or have to support IoT devices, you’ll need to make sure of two things: (1) all clients of your API must trust ISRG Root X1 (not just DST Root CA X3), and (2) if clients of your API are using OpenSSL, they must use version 1.1.0 or later. In OpenSSL 1.0.x, a quirk in certificate verification means that even clients that trust ISRG Root X1 will fail when presented with the Android-compatible certificate chain we are recommending by default.

                          I guess it's openssl lib the faulty then!
                          But I don't understand why/how this expired certificate is affecting an app as it is not used anymore in the certificates chain... where/how is this DST Root CA X3 certificate used? is it embedded in openssl?

                          1 Reply Last reply
                          0
                          • jeremy_kJ Offline
                            jeremy_kJ Offline
                            jeremy_k
                            wrote on last edited by
                            #14

                            There was a discussion that went into details on the qt-interest mailing list. https://lists.qt-project.org/pipermail/interest/2021-October/037642.html in particular.

                            Asking a question about code? http://eel.is/iso-c++/testcase/

                            1 Reply Last reply
                            1

                            • Login

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