Index: qt/src/network/ssl/qsslcertificate.cpp
--- qt/src/network/ssl/qsslcertificate.cpp.orig
+++ qt/src/network/ssl/qsslcertificate.cpp
@@ -278,11 +278,11 @@ QByteArray QSslCertificate::serialNumber() const
     if (d->serialNumberString.isEmpty() && d->x509) {
         ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509);
         // if we cannot convert to a long, just output the hexadecimal number
-        if (serialNumber->length > 4) {
+        if (q_ASN1_STRING_length(serialNumber) > 4) {
             QByteArray hexString;
-            hexString.reserve(serialNumber->length * 3);
-            for (int a = 0; a < serialNumber->length; ++a) {
-                hexString += QByteArray::number(serialNumber->data[a], 16).rightJustified(2, '0');
+            hexString.reserve(q_ASN1_STRING_length(serialNumber) * 3);
+            for (int a = 0; a < q_ASN1_STRING_length(serialNumber); ++a) {
+                hexString += QByteArray::number(q_ASN1_STRING_get0_data(serialNumber)[a], 16).rightJustified(2, '0');
                 hexString += ':';
             }
             hexString.chop(1);
@@ -427,7 +427,7 @@ QMultiMap<QSsl::AlternateNameEntryType, QString> QSslC
                 continue;
             }
 
-            const char *altNameStr = reinterpret_cast<const char *>(q_ASN1_STRING_data(genName->d.ia5));
+            const char *altNameStr = reinterpret_cast<const char *>(q_ASN1_STRING_get0_data(genName->d.ia5));
             const QString altName = QString::fromLatin1(altNameStr, len);
             if (genName->type == GEN_DNS)
                 result.insert(QSsl::DnsEntry, altName);
@@ -696,7 +696,7 @@ static QMap<QString, QString> _q_mapFromX509Name(X509_
         unsigned char *data = 0;
         int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
         info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size);
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
         q_CRYPTO_free(data);
 #else
         q_OPENSSL_free(data);
