AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi HTTPS-Server in eigener Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

HTTPS-Server in eigener Anwendung

Ein Thema von Hobbycoder · begonnen am 22. Mai 2017 · letzter Beitrag vom 23. Mai 2017
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#1

HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 07:24
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (22. Mai 2017 um 07:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 07:32
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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#3

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 07:34
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#4

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 09:16
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.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#5

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 09:32
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?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#6

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 09:43
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.
Miniaturansicht angehängter Grafiken
2017-05-22-10_40_17-benachrichtigung-ueber-debugger-exception.png  
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 09:45
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#8

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 09:56
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;
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#9

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 10:13
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.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#10

AW: HTTPS-Server in eigener Anwendung

  Alt 22. Mai 2017, 10:26
Was für eine Verschlüsselung/Verfahren verwendest du denn? Da wird nicht mehr alles als sicher betrachtet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
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