![]() |
AW: HTTPS-Server in eigener Anwendung
Noch ein Tipp: als Aufsatz auf den Indy HTTP Server habe ich dieses Open Source Framework geschrieben, mit dem sich HTTP Requests leichter mit dem eigenen Code verknüpfen lassen:
[Werbung] ![]() [/Werbung] Es sollte im Prinzip auch mit HTTPS einsetzbar sein werden, da der interne Indy HTTP Server über eine Property angesprochen werden kann. (In der Praxis wird oft ein Apache HTTP Server als Reverse Proxy eingesetzt, der die Verschlüsselung erledigt) Homepage: ![]() Github-Projekt: ![]() |
AW: HTTPS-Server in eigener Anwendung
Zitat:
Zitat:
|
AW: HTTPS-Server in eigener Anwendung
Zitat:
![]() ![]() Das könnte man bei Interesse vllt in einem neuen Thread mal beginnen und auf github oder so stellen :) Und wenn es nur Wrapper für ne C Lib sind... Brighty |
AW: HTTPS-Server in eigener Anwendung
Zitat:
![]() Deren Sourcecode ist vermutlich open. Für eine Portierung nach Pascal ein Startpunkt... |
AW: HTTPS-Server in eigener Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
![]() Hier ein paar Tipps, was ich gemacht habe, dass man "A" erreichen kann: 1. Hier meine Konfiguration vom TIdServerIOHandlerSSLOpenSSL:
Delphi-Quellcode:
SSLDefaultCipherList ist in der beigelegten uOpenSSLPatch Datei definiert.
IdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile:= appDir + 'Zertifikat\dhparam.pem';
IdServerIOHandlerSSLOpenSSL.SSLOptions.KeyFile:= appDir + 'Zertifikat\de_private_key.key'; IdServerIOHandlerSSLOpenSSL.SSLOptions.CertFile:= appDir + 'Zertifikat\de_ssl_certificate.cer'; IdServerIOHandlerSSLOpenSSL.SSLOptions.RootCertFile:= appDir + 'Zertifikat\de_ssl_certificate_INTERMEDIATE.cer'; IdServerIOHandlerSSLOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]; IdServerIOHandlerSSLOpenSSL.SSLOptions.Mode := sslmServer; IdServerIOHandlerSSLOpenSSL.SSLOptions.CipherList := SSLDefaultCipherList; 2. Die dhparam.pem Datei muss mind. 1024Bit haben und wird so erstellt:
Code:
3. Der SSLContext vom TIdServerIOHandlerSSLOpenSSL muss gepatcht werden:
openssl dhparam -outform PEM -out dhparam.pem 1024
Hierzu die Source-Datei aus dem Anhang (uOpenSSLPatch.pas) verwenden und z.B. im FormCreate folgenden Befehl aufrufen:
Delphi-Quellcode:
//OpenSSL Patchen...
SSL_CTX_patch(IdServerIOHandlerSSLOpenSSL.SSLContext.InternalContext); So, wenn ich jetzt nichts übersehen oder verwechselt habe müsste es bei ![]() Es gibt auch noch ein A+ Rating. Ich bin gerne für Tipps offen wie man das hin bekommt. Wichtig: Das Zertifikat darf natürlich nicht self-signed sein! Ich habe meines z.B. von 1und1. (früher StartCom, aber die sind scheinbar nicht mehr vertrauenswürdig). |
AW: HTTPS-Server in eigener Anwendung
Toll, dass du deine Erfahrungen hier zur Verfügung stellst.
Ich werde das mal mit einbauen. Mal sehen welches Ranking ich dann erreiche. T bzw. C ist ja nicht unbedingt top. Aber ich habe mir das mal mit Let's Trust angeschaut. Der Aufwand ist mir für diese kleine Anwendung viel zu hoch. Mein Hauptziel für den Einsatz von SSL war, dass der Transport verschlüsselt erfolgt, was jetzt ja der Fall ist. Und dazu muss es noch nicht einmal den besten Hackern mit den optimalsten Möglichkeiten standhalten, sondern es soll eben den Aufwand für das Abgreifen der Daten über den Nutzen stellen, den man dadurch hätte. Und weil es eben im Grund um unsensible Daten geht und auch keinerlei Steuerungsmöglichkeiten, ist das hier definitiv der Fall. Von da her werde ich es bei self-signed Zertifikaten belassen. Wer denn später mit meinem Programm ein offizielles, kostenverbundenes Zertifikat verwenden möchte kann es ja tun. Aber das Thema ist so interessant, dass ich mich noch mehr damit beschäftigen möchte. PS: Ist es wirklich notwendig TLS 1.0 und TLS 1.1 noch zu unterstützen? Halbwegs aktuelle Smartphones und Betriebssystem sollte doch mit TLS 1.2 problemlos klar kommen. Und es gibt ja bestimmt auch einen Grund, warum TLS 1.2 entwickelt wurde. Sollte das nicht zu einem höheren Sicherheitsstand führen? Und: Könntest du noch mal erläutern was in dhparam.pem drin steht und in welchem Zusammenhang das mit dem Zertifikat / Key steht? Immerhin wird ja beim erzeugen keinerlei Bezug auf diese genommen. |
AW: HTTPS-Server in eigener Anwendung
Zitat:
Zitat:
|
AW: HTTPS-Server in eigener Anwendung
Zitat:
|
AW: HTTPS-Server in eigener Anwendung
Zitat:
Delphi-Quellcode:
Self ist bei mir NIL.
function TIdSSLContextHelper.InternalContext: PSSL_CTX;
begin Result := Self.FContext; end; ich setzte das auch nicht auf eine Form, sondern habe das in einem Thread. Ich wollte das so machen:
Delphi-Quellcode:
ich kann's natürlich auch im ThreadCreate machen, aber da gibt es mein FIdServerIOHandlerSSLOpenSSL noch gar nicht. Ich erzeuge den erst im ThreadExecute. Muss von TIdSSLContextHelper keine Instanz erzeugt werden?
FIdServerIOHandlerSSLOpenSLL:=TIdServerIOHandlerSSLOpenSSL.Create(nil);
SSL_CTX_patch(FIdServerIOHandlerSSLOpenSLL.SSLContext.InternalContext); FIdServerIOHandlerSSLOpenSLL.OnGetPassword:=IdSSLIOHandlerSocketOpenSSL1GetPassword; |
AW: HTTPS-Server in eigener Anwendung
Zitat:
Ich habe natürlich nur ein TIdServerIOHandlerSSLOpenSSL im Haupt-Thread (sogar direkt auf dem Formular). Aber das reicht doch eigentlich auch? Warum den Server (inkl. IOHandler) in einem Thread anlegen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz