diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index e7d6266f31f..f38ce4ad6e6 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -190,43 +190,7 @@ bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection, return true; } - connect(reply, &QNetworkReply::sslErrors, this, [](auto& errors) { - for(auto&& error : errors) - { - qDebug() << "Got ssl error from metaverse server:" << error.errorString(); - qDebug() << "Cert issuer:" << error.certificate().issuerDisplayName(); - - auto issuerInfo = error.certificate().issuerInfo(QSslCertificate::Organization); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer org:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::CommonName); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer name:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::LocalityName); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer locality name:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::OrganizationalUnitName); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer org unit name:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::CountryName); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer country name:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::StateOrProvinceName); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer state/province name:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::DistinguishedNameQualifier); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer name qualifier:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::SerialNumber); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer serial number:" << info; } - - issuerInfo = error.certificate().issuerInfo(QSslCertificate::EmailAddress); - for(auto&& info : issuerInfo) { qDebug() << "Cert issuer email:" << info; } - - qDebug() << "To Text:" << error.certificate().toText().toStdString().c_str(); - - } - }); + connect(reply, &QNetworkReply::sslErrors, [reply](const auto& errors) { MetaverseAPI::logSslErrors(reply, errors); }); connect(reply, &QNetworkReply::finished, this, [reply, connection]() { if (reply->error() != QNetworkReply::NoError) { @@ -2752,6 +2716,8 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); QNetworkReply* reply = NetworkAccessManager::getInstance().put(req, doc.toJson()); + connect(reply, &QNetworkReply::sslErrors, [reply](const auto& errors) { MetaverseAPI::logSslErrors(reply, errors); }); + connect(reply, &QNetworkReply::finished, this, [reply, connection]() { if (reply->error() != QNetworkReply::NoError) { qDebug() << "Got error response from metaverse server: " << reply->readAll(); diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index ce449a66c31..aed269f8ddb 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -350,6 +350,7 @@ void AccountManager::sendRequest(const QString& path, } }); + connect(networkReply, &QNetworkReply::sslErrors, [networkReply](const auto& errors) { MetaverseAPI::logSslErrors(networkReply, errors); }); if (callbackParams.isEmpty()) { connect(networkReply, &QNetworkReply::finished, networkReply, &QNetworkReply::deleteLater); diff --git a/libraries/networking/src/MetaverseAPI.cpp b/libraries/networking/src/MetaverseAPI.cpp index ea10a056807..800373b1a82 100644 --- a/libraries/networking/src/MetaverseAPI.cpp +++ b/libraries/networking/src/MetaverseAPI.cpp @@ -13,11 +13,15 @@ #include "MetaverseAPI.h" #include +#include +#include +#include #include #include #include "NetworkingConstants.h" +#include "NetworkLogging.h" #include "NodeList.h" @@ -98,4 +102,17 @@ namespace MetaverseAPI { return path; }; + + void logSslErrors(const QNetworkReply* reply, const QList& errors) { + for(auto&& error : errors) + { + qCDebug(networking_metaverse) << "Got SSL error from Metaverse server:" << error.errorString(); + if (reply) { + qCDebug(networking_metaverse) << "Ciphers:" << reply->sslConfiguration().ciphers(); + qCDebug(networking_metaverse) << "SSL session cipher:" << reply->sslConfiguration().sessionCipher(); + qCDebug(networking_metaverse) << "Supported SSL Ciphers:" << QSslSocket::supportedCiphers(); + } + qCDebug(networking_metaverse) << error.certificate().toText().toStdString().c_str(); + } + } } // namespace MetaverseAPI diff --git a/libraries/networking/src/MetaverseAPI.h b/libraries/networking/src/MetaverseAPI.h index 6dd822586fd..b31287569e5 100644 --- a/libraries/networking/src/MetaverseAPI.h +++ b/libraries/networking/src/MetaverseAPI.h @@ -17,6 +17,8 @@ #include #include +#include +#include namespace MetaverseAPI { @@ -45,6 +47,8 @@ namespace MetaverseAPI { QUrl getCurrentMetaverseServerURL(); QString getCurrentMetaverseServerURLPath(bool appendForwardSlash = false); + + void logSslErrors(const QNetworkReply* reply, const QList& errors); } #endif // athena_MetaverseAPI_h diff --git a/libraries/networking/src/NetworkLogging.cpp b/libraries/networking/src/NetworkLogging.cpp index daa8c8c4161..250f621ff92 100644 --- a/libraries/networking/src/NetworkLogging.cpp +++ b/libraries/networking/src/NetworkLogging.cpp @@ -17,3 +17,4 @@ Q_LOGGING_CATEGORY(resourceLog, "hifi.networking.resource") Q_LOGGING_CATEGORY(asset_client, "hifi.networking.asset_client") Q_LOGGING_CATEGORY(messages_client, "hifi.networking.messages_client") Q_LOGGING_CATEGORY(networking_webrtc, "hifi.networking.webrtc") +Q_LOGGING_CATEGORY(networking_metaverse, "hifi.networking.metaverse") diff --git a/libraries/networking/src/NetworkLogging.h b/libraries/networking/src/NetworkLogging.h index 906947b7c44..ccbc7561887 100644 --- a/libraries/networking/src/NetworkLogging.h +++ b/libraries/networking/src/NetworkLogging.h @@ -20,5 +20,6 @@ Q_DECLARE_LOGGING_CATEGORY(networking_ice) Q_DECLARE_LOGGING_CATEGORY(asset_client) Q_DECLARE_LOGGING_CATEGORY(messages_client) Q_DECLARE_LOGGING_CATEGORY(networking_webrtc) +Q_DECLARE_LOGGING_CATEGORY(networking_metaverse) #endif // hifi_NetworkLogging_h