![]() |
HTTPS-Server in eigener Anwendung
Hi,
ich habe in meinem Projekt einen kleinen Mini-HTTP-Server über Indy integriert. Jetzt will ich den noch mit einer SSL-Option versehen. Über OpenSSL habe ich mir ein passendes Zertifikat nach ![]() Bis auf die Tatsache, dass der Browser einen Zertifikatsfehler meldet und mir sagt, dass mein Zertifikat ungültig ist. Nun möchte ich auch, dass jeder, der dieses Programm betreibt, eigene Zertifikate hinterlegen kann. Und das natürlich auch ohne weitere Kosten (das Prog selbst soll auch nichts kosten). Wie wäre jetzt das richtige Vorgehen? Muss man so ein Zertifikat irgendwo kaufen, oder kann man sich das quasi selber signieren? Es geht im Grunde nur darum die Datenübertragung abzusichern, sprich zu Verschlüsseln. (Ist zwar von den Informationen, die dort übertragen werden, nicht wirklich zwingend notwendig, aber a) sieht's schick aus und b) wollte ich das einfach mal machen). Das ganze Thema ist doch leider etwas kompliziert. Ich bräuchte da mal jemand, der mir ein wenig dir Richtung zeigt. Ich habe dann noch das ![]() Sorry für die dumme Frage, aber ich habe mit dem Thema mangels Notwendigkeit noch nie wirklich beschäftigt. Desweiteren bekomme ich immer mal wieder, wenn der HTTP-Server das erste Mal von einem Client angefragt wird, die Fehler Meldung EIdOSSLUnderlyingCryptoError. Bestätige ich die aber im Programm und lasse es einfach weiterlaufen, so wird die Seite korrekt angezeigt. |
AW: HTTPS-Server in eigener Anwendung
Ist dieser Mini-http-Server nur für den lokalen Zugriff freigeschaltet (wie mittlerweile viele Programme machen) oder willst du hier wirklich LAN-Weit deine Lösung bereit stellen.
Falls es nur eine lokaler Webserver ist - Was für einen Vorteil erwartest du wenn du den Zugriff über https ermöglichst? Welches Angriffsszenario will du hier ausschalten? |
AW: HTTPS-Server in eigener Anwendung
Nein, natürlich Lan-Weit bzw. über Port-Freischaltung auch aus dem I-Net. Sonst könnte ich mir den kram ja auch sparen.
Es geht dabei darum, bestimmte Daten auch per Handy abzurufen, und wenn der Nutzer das über seinen Router freigibt auch aus dem Internet. |
AW: HTTPS-Server in eigener Anwendung
Hier mal mein Halbwissen dazu: Im Browser oder Betriebssystem sind gültige Zertifizierungsstellen hinterlegt, von denen ausgestellte Zertifikate akzeptiert werden. Von diesen kann man dann ein Zertifikat kaufen, welches direkt als gültig betrachtet wird. Selbst ausgestellten Zertifikaten fehlt diese vertrauenswürdige Zertifizierungsstelle, deshalb wird ihnen misstraut und es kommt ein Fehler. Du kannst dein Zertifikat aber irgendwie manuell im Browser/OS eintragen, damit auch dieses als gültig betrachtet wird.
|
AW: HTTPS-Server in eigener Anwendung
Danke für den Hinweis.
Ich habe das Zertifikat mal importiert und dann mittel mmc in die Vertrauenwürdigen Zertifikate verschoben. Jetzt Zeit mir der IE schon mal, dass mein Zertifikat gültig ist. Aber ich habe immer noch die URL rot hinterlegt und daneben "Zertifikatfehler" stehen. Um was für einen Fehler es sich handelt, will mir IE nicht preisgeben. Schön wäre es, wenn man es hinbekäme, das dir URL grün wird. Es wäre ja auch praktisch, wenn man das Clients, ohne gültiges Zertifikat gleich mal anweisen könnte. Also nur die Clients reinlassen, die ihrerseits das Zertifikat bereits vorliegen haben. Spannende Frage: Kann man das mit Indy machen? |
AW: HTTPS-Server in eigener Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Auch bekomme ich dann im Programm immer eine Exception (s.Bild im Anhang) EIdOSSLAcceptError, dessen Ursache ich mir nicht erklären kann. Das kann, muss aber nicht, damit in Verbindung stehen.
|
AW: HTTPS-Server in eigener Anwendung
Der Zertifikatsfehler dürfte weiterhin auf die selbstgemachte Herkunft hinweisen.
Noch eine Portion Halbwissen von mir: Wenn Du das Ding wirklich ins Internet stellst, darfst Du Dich eine völlig neue Dimension des Schmerzes freuen. Ich hoffe sehr, daß Du regelmäßig und vollständig Backups von all Deinen Rechnern ziehst. Sherlock |
AW: HTTPS-Server in eigener Anwendung
Zitat:
Und zurück zum Thema: Hier mal etwas von dem Source, vielleicht habe ich da ja schon einen eklatanten Fehler drin:
Delphi-Quellcode:
FIdServerIOHandlerSSLOpenSLL:=TIdServerIOHandlerSSLOpenSSL.Create(nil);
FIdServerIOHandlerSSLOpenSLL.OnGetPassword:=IdSSLIOHandlerSocketOpenSSL1GetPassword; FIdServerIOHandlerSSLOpenSLL.SSLOptions.Method:=sslvSSLv23; FIdServerIOHandlerSSLOpenSLL.SSLOptions.Mode:=sslmServer; FIdServerIOHandlerSSLOpenSLL.SSLOptions.CertFile:=ExtractFilePath(Self.FPicdefFilename)+'testzertifikat.crt'; FIdServerIOHandlerSSLOpenSLL.SSLOptions.KeyFile:=ExtractFilePath(Self.FPicdefFilename)+'testzertifikat.key'; FIdServerIOHandlerSSLOpenSLL.SSLOptions.RootCertFile:=ExtractFilePath(Self.FPicdefFilename)+'testzertifikat.pem'; // FIdServerIOHandlerSSLOpenSLL.SSLOptions.VerifyDepth := 1; // FIdServerIOHandlerSSLOpenSLL.SSLOptions.VerifyMode := [sslvrfPeer,sslvrfFailIfNoPeerCert,sslvrfClientOnce]; FHTTP:=TIdHTTPServer.Create(nil); FHTTP.IOHandler:=FIdServerIOHandlerSSLOpenSLL; FHTTP.AutoStartSession:=True; FHTTP.SessionState:=True; FHTTP.ParseParams:=True; FHTTP.Bindings.Clear; for i:=0 to FIPs.Count-1 do begin if (Self.FPort>0) then begin with FHTTP.Bindings.Add do begin IP:=FIPs[i]; Port:=Self.FPort; end; end; if (self.FSSLPort>0) then begin with FHTTP.Bindings.Add do begin IP:=FIPs[i]; Port:=FSSLPort; end; end; end; FHTTP.OnCommandGet:=OnCommandGet; try DoOnHTTPStart; FHTTP.Active:=True; |
AW: HTTPS-Server in eigener Anwendung
Zitat:
Sehr praktisch ist auch der Test unter ![]() |
AW: HTTPS-Server in eigener Anwendung
Was für eine Verschlüsselung/Verfahren verwendest du denn? Da wird nicht mehr alles als sicher betrachtet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 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