Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTTPS-Server in eigener Anwendung (https://www.delphipraxis.net/192813-https-server-eigener-anwendung.html)

Hobbycoder 22. Mai 2017 07:24

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 diesem Thread erstellt. Seite wird aufgerufen, alles gut.

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 https://forums.embarcadero.com/threa...hreadID=105763 gefunden, ich weiß aber nicht ob das Programm mein Problem lösen kann. Kann man damit seine Zertifikate selber signieren, so dass sie gültig sind?

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.

Bernhard Geyer 22. Mai 2017 07:32

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?

Hobbycoder 22. Mai 2017 07:34

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.

Olli73 22. Mai 2017 09:16

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.

Hobbycoder 22. Mai 2017 09:32

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?

Hobbycoder 22. Mai 2017 09:43

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.

Sherlock 22. Mai 2017 09:45

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

Hobbycoder 22. Mai 2017 09:56

AW: HTTPS-Server in eigener Anwendung
 
Zitat:

Zitat von Sherlock (Beitrag 1372298)
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.

Warum? Der HTTP-Server verfügt über keinerlei Möglichkeiten Daten oder Steuerungsbefehle entgegen zu nehmen. Er liefert lediglich über OnCommand im Programm statisch erzeugte, minmalistische Webseiten, die Information über bestimmte Zustände bzw. eine JPG-Grafik liefert. In wie weit sollte das dann einen neue Dimension des Schmerzes erzeugen? Ich will ja keinen richtigen Web-Server bauen.


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;

mjustin 22. Mai 2017 10:13

AW: HTTPS-Server in eigener Anwendung
 
Zitat:

Zitat von Hobbycoder (Beitrag 1372296)
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.

Falls IE da nichts preisgibt, würde ich einen anderen (z.B. den Chrome Browser) verwenden, und schauen ob er eine detailliertere Fehlermeldung ausgibt.

Sehr praktisch ist auch der Test unter https://www.ssllabs.com/ssltest/analyze.html, da werden für deinen Server gleich auch entdeckte Sicherheitslücken angezeigt. Voraussetzung ist dafür allerdings, dass der Server im Internet erreichbar ist.

Olli73 22. Mai 2017 10:26

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 06:12 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz