Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Server (https://www.delphipraxis.net/76163-indy-openssl-zertifikate-erstellen-fuer-ssl-client-server.html)

sECuRE 30. Aug 2006 21:37


(Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Server
 
Hi,

ich verwende in meinem Client/Server-Programm die Indykomponenten (TIdTCPClient). Diese möchte ich nun gerne mit SSL ausstatten, was auch soweit ganz gut klappt.

Allerdings habe ich jetzt das leidige Problem mit den Zertifikaten. Ich hab mir aus einem Beispiel welche kopiert, und das klappt soweit auch.

Jetzt möchte ich allerdings gerne eigene Benutzen, weiß aber nicht, wie ich meinen Programmen beibringen kann, welche zu erzeugen (an die OpenSSL-DLLs komme ich ran, den Sourcecode (bis auf die openssl_lib.pas) seht ihr auf http://nopaste.tshw.de/1156963801bd0b4).

Benötigt werden genauer 3 Zertifikate, einmal das Rootzertifikat (sampleRoot.pem), das beginnt mit "CERTIFICATE" in der Datei. Dann der Schlüssel selbst (beispiel.key), der mit "RSA PRIVATE" beginnt und (anscheinend) der öffentliche Teil des Schlüssels (beispiel.crt), der wieder mit "CERTIFICATE" beginnt.

Hat da jemand Erfahrungen, eine Lösung oder Tipps? Ich wäre für alles dankbar, sowohl Beispielquelltext in irgendeiner Sprache (Delphi natürlich) bevorzugt, als auch Lösungen die openssl.exe aufrufen, oder was auch immer - hauptsache es kommen mit vertretbarem Aufwand die genannten Dateien am Ende dabei heraus.

Vielen Dank schon mal für die Hilfe und viele Grüße
sECuRE

RobertP 10. Sep 2006 21:29

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
*Post hochschieb*

würd mich auch interessieren wie des geht :)

mkinzler 10. Sep 2006 21:31

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Bei OpenSSL müßte es eigentlich Tools zum erstellen von Keys und Zertifikaten geben.

omata 10. Sep 2006 22:44

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Erstmal OpenSSL besorgen und installieren.

Dann eine Konsole öffnen und in das Verzeichnis C:\Programme\OpenSSL\bin wechseln.
Dort dann openssl.exe aufrufen.

Code:
OpenSSL> req -config openssl.cnf -new -out zertifikat.csr
Enter PEM pass phrase: Mein Passwort
Country Name: DE
State or Province Name: Mein Bundesland
Locality Name: Mein Ort
Organization Name: Meine Firma
Organization Unit Name: Meine Abteilung
Common Name: Mein Name
Email Adress: ich@du.de
A challenge Passwort: Mein Zertifikat-Passwort

Code:
OpenSSL> rsa -in privkey.pem -out zertifikat.key
Enter pass phrase for privkey.pem: Mein Passwort

Code:
OpenSSL> x509 -in zertifikat.csr -out zertifikat.cert -req -signkey zertifikat.key -days 365
(365 Tage gültig, kann auch anders gewählt werden)

Code:
OpenSSL> exit
Die erstellten Dateien befinden sich jetzt im BIN-Ordner.

privkey.pem -> sample.key
zertifikat.cert -> sample.crt, sampleRoot.pem

Delphi-Quellcode:
  IdServerIOHandlerSSLOpenSSL.SSLOptions.KeyFile:='sample.key';
  IdServerIOHandlerSSLOpenSSL.SSLOptions.CertFile:='sample.crt';
  IdServerIOHandlerSSLOpenSSL.SSLOptions.RootCertFile:='sampleRoot.pem';
:
procedure TForm.IdServerIOHandlerSSLOpenSSLGetPassword(var Password: String);
begin
  password:= 'Mein Passwort';
end;
Hoffe das hilft.

Gruss
Thorsten

RobertP 11. Sep 2006 11:54

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Also ich hab jetzt die Zertifikate erstellt, dann die privkey.pem in sample.key umbenannt und die zertifikat.cert kopiert und in sample.crt und sampleRoot.pem umbenannt.

Allerdings erhalte ich immer den Fehler 'Could not load SSL Library'

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile := 'sample.key';
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := 'sample.crt';
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.RootCertFile := 'sampleRoot.pem';

  Memo1.Lines.Add(IdHTTP1.Get('https://www.digiposter.de/info/de/test_ssl.html'));
end;

procedure TForm1.IdSSLIOHandlerSocketOpenSSL1GetPassword(var Password: string);
begin
  password:= '*********';
end;
Beim IdHTTP1 ist als IOHandler IdSSLIOHandlerSocketOpenSSL1 eingestellt. Was mach ich falsch?

omata 11. Sep 2006 19:06

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Hallo MrPayne,

kommt der Fehler auch mit den Beispieldateien?

Bei mir war das so und ich habe dann noch etwas verändert. Vielleicht kannst du das ja noch mal mit den original Beispieldateien testen.

Gruss
Thorsten

RobertP 11. Sep 2006 19:42

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Fehler gefunden. Man braucht extra openssl DLLs :roll:

omata 11. Sep 2006 19:43

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Kannst du da noch etwas genauer werden?

Welcher, Woher, Wohin...

RobertP 11. Sep 2006 19:47

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
Die DLLs bekommst du hier. Einfach in selben Ordner wie das Programm packen.

omata 11. Sep 2006 20:06

Re: (Indy/OpenSSL) Zertifikate erstellen für SSL-Client/Serv
 
:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 1 von 2  1 2      

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