Hallo Qt-Profies,
ich habe einen QnetworkAccessManager angelegt:
globalNetworkManager = new QnetworkAccessManager(this);
Anschließend habe ich eine QUrl angelegt:
QUrl dataURL;
dataURL.setUserName(userName);
dataURL.setHost(host);
dataURL.setPort(port);
dataURL.setPath(path);
und kopiere Daten auf einen FTP-Sever:
QByteArray uploadCache;
uploadCache1.append(dataString());
globalNetworkManager->put(QNetworkRequest(dataURL), uploadCache);
Das funktioniert auch so weit sehr gut! Die Daten werden hochgeladen.
Auch mit Passwort funktioniert das.
Jetzt wurde allerdings der Server mittels TLS1.2 verschlüsselt.
Nun funktioniert das Anmelden an den Server nicht mehr. (Mit Filezilla kann ich das problemlos, aber nicht mit meinem Qt Programm.)
Es liegt wohl daran, dass Qt TLS1.0 benutzt.
Laut Dokumentation kann man das wohl umstellen:
QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1_2);
sslSocket.setSslConfiguration(config);
Das Problem ist, dass ich überhaupt kein QSslSocket benutze. Ich benutze ja nur QNetworkAccessManager und Qurl. Beide haben aber nicht die Methode sslConfiguration().
Ich stehe jetzt etwas auf dem Schlauch. Was muss ich machen damit ich die Daten verschlüsselt übertragen kann? Wie setze ich beim QnetworkAccessManager bzw. bei QURL die Verschlüssellung? Oder muss ich mich von meiner alten Lösung, (die unverschlüsselt gut funktioniert) verabschieden und das ganze mit Qsocket neu/anders programmieren? Wenn ja: Wie?
Gruß
TLS1.2 Verschlüsselung eines FTP-Servers
Re: TLS1.2 Verschlüsselung eines FTP-Servers
Hallo,
aus der Dokumentation für QNetworkAccessManager:
Das Setzen der SSL-Konfiguration erfolgt entsprechend über
Gruß MIchael
aus der Dokumentation für QNetworkAccessManager:
Code: Alles auswählen
The SSL configuration in use can be inspected using the QNetworkReply::sslConfiguration() method.
Code: Alles auswählen
QNetworkReply::setSslConfiguration
Gruß MIchael
Re: TLS1.2 Verschlüsselung eines FTP-Servers
ah... ok.
Erst einen QNetworkRequest und dort die QSslConfiguration durchführen.
Das hört sich logisch an.
Compiliert auch gut.
Macht aber trotzdem noch einen Fehler beim Handshake.
Leider ist die Fehlerangabe bei Qt für den fehlerhaften Handshake sehr dünn.
Der Fehler könnte jetzt am Server liegen (dort ist das Datum des Zertifikates abgelaufen). Filezilla warnt darüber, kann aber trotzdem auf den Server zugreifen. Ich denk Qt bricht evtl. deshalb (richtigerweise) ab.
Ich probiere es mal auf einem Server, bei dem das Zertifikat nicht abgelaufen ist (bzw. warte, bis die Leute ihren Server mal richtig aufgesetzt haben.)
Danke für die schnelle und tolle Antwort.
Erst einen QNetworkRequest und dort die QSslConfiguration durchführen.
Das hört sich logisch an.
Compiliert auch gut.
Macht aber trotzdem noch einen Fehler beim Handshake.
Leider ist die Fehlerangabe bei Qt für den fehlerhaften Handshake sehr dünn.
Der Fehler könnte jetzt am Server liegen (dort ist das Datum des Zertifikates abgelaufen). Filezilla warnt darüber, kann aber trotzdem auf den Server zugreifen. Ich denk Qt bricht evtl. deshalb (richtigerweise) ab.
Ich probiere es mal auf einem Server, bei dem das Zertifikat nicht abgelaufen ist (bzw. warte, bis die Leute ihren Server mal richtig aufgesetzt haben.)
Danke für die schnelle und tolle Antwort.