From: Christian Kamm Date: Fri, 11 Jan 2019 12:14:30 +0000 (+0100) Subject: Wizard: Ensure client cert doesn't get lost #6911 X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~342 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=aa23058d76f7f99b9e4aaf7d296f85f9b7135328;p=nextcloud-desktop.git Wizard: Ensure client cert doesn't get lost #6911 --- diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 519fcaef0..cb401cd56 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -150,11 +150,27 @@ void OwncloudSetupWizard::slotCheckServer(const QString &urlString) } AccountPtr account = _ocWizard->account(); account->setUrl(url); + // Reset the proxy which might had been determined previously in ConnectionValidator::checkServerAndAuth() // when there was a previous account. account->networkAccessManager()->setProxy(QNetworkProxy(QNetworkProxy::NoProxy)); + // And also reset the QSslConfiguration, for the same reason (#6832) - account->setSslConfiguration({}); + // Here the client certificate is added, if any. Later it'll be in HttpCredentials + account->setSslConfiguration(QSslConfiguration()); + auto sslConfiguration = account->getOrCreateSslConfig(); // let Account set defaults + if (!_ocWizard->_clientSslCertificate.isNull()) { + sslConfiguration.setLocalCertificate(_ocWizard->_clientSslCertificate); + sslConfiguration.setPrivateKey(_ocWizard->_clientSslKey); + } + // Be sure to merge the CAs + auto ca = sslConfiguration.systemCaCertificates(); + ca.append(_ocWizard->_clientSslCaCertificates); + sslConfiguration.setCaCertificates(ca); + account->setSslConfiguration(sslConfiguration); + + // Make sure TCP connections get re-established + account->networkAccessManager()->clearAccessCache(); // Lookup system proxy in a thread https://github.com/owncloud/client/issues/2993 if (ClientProxy::isUsingSystemDefault()) { diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp index db9289992..c024c19d5 100644 --- a/src/gui/wizard/owncloudsetuppage.cpp +++ b/src/gui/wizard/owncloudsetuppage.cpp @@ -371,27 +371,7 @@ void OwncloudSetupPage::slotCertificateAccepted() &_ocWizard->_clientSslCertificate, &_ocWizard->_clientSslCaCertificates, addCertDial->getCertificatePasswd().toLocal8Bit())) { - AccountPtr acc = _ocWizard->account(); - - // to re-create the session ticket because we added a key/cert - acc->setSslConfiguration(QSslConfiguration()); - QSslConfiguration sslConfiguration = acc->getOrCreateSslConfig(); - - // We're stuffing the certificate into the configuration form here. Later the - // cert will come via the HttpCredentials - sslConfiguration.setLocalCertificate(_ocWizard->_clientSslCertificate); - sslConfiguration.setPrivateKey(_ocWizard->_clientSslKey); - - // Be sure to merge the CAs - auto ca = sslConfiguration.systemCaCertificates(); - ca.append(_ocWizard->_clientSslCaCertificates); - sslConfiguration.setCaCertificates(ca); - - acc->setSslConfiguration(sslConfiguration); - - // Make sure TCP connections get re-established - acc->networkAccessManager()->clearAccessCache(); - + // The SSL cert gets added to the QSslConfiguration in checkServer() addCertDial->reinit(); // FIXME: Why not just have this only created on use? validatePage(); } else {