TLS1.2 Verschlüsselung eines FTP-Servers

Alles rund um die Programmierung mit Qt
Antworten
Volker75
Beiträge: 59
Registriert: 8. April 2009 21:04

TLS1.2 Verschlüsselung eines FTP-Servers

Beitrag von Volker75 »

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ß
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: TLS1.2 Verschlüsselung eines FTP-Servers

Beitrag von MichaelS »

Hallo,

aus der Dokumentation für QNetworkAccessManager:

Code: Alles auswählen

 The SSL configuration in use can be inspected using the QNetworkReply::sslConfiguration() method.
Das Setzen der SSL-Konfiguration erfolgt entsprechend über

Code: Alles auswählen

QNetworkReply::setSslConfiguration

Gruß MIchael
Volker75
Beiträge: 59
Registriert: 8. April 2009 21:04

Re: TLS1.2 Verschlüsselung eines FTP-Servers

Beitrag von Volker75 »

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.
Antworten