Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10 SSL Client ohne Private Key File (https://www.delphipraxis.net/206298-indy-10-ssl-client-ohne-private-key-file.html)

Codehunter 8. Dez 2020 08:29

Indy 10 SSL Client ohne Private Key File
 
Hallo!

Ich habe ein selbstsigniertes Zertifikat erstellt. Die csr.pem habe ich dem Serverbetreiber gegeben und er hat mir ein signiertes Zertifikat client.pem zurückgegeben. Nun soll das übliche TIdHTTP+TIdSSLIOHandlerSocketOpenSSL - Gespann eine gewöhnliche TLS1.2-gesicherte Verbindung aufbauen. Bei TIdSSLIOHandlerSocketOpenSSL.SSLOptions.CertFile gebe ich den Pfad zur client.pem an.

Beim Versuch eines GET-Request zum Server steigt Indy jedoch mit einer EIdOSSLLoadingKeyError Exception aus. Gebe ich zusätzlich unter TIdSSLIOHandlerSocketOpenSSL.SSLOptions.KeyFile noch den Pfad zu der ursprünglich von mir erstellten privkey.pem an, dann baut Indy die Verbindung problemlos auf.

Soweit ich aber das SSL/TLS-Prinzip verstehe, sollte es die Private Keys auf der Clientseite gar nicht brauchen. Ich beziehe mich dabei auf das hier:
Zitat:

At no point in the SSL process does The SSL Store have your private key. It should be saved safely on the server you generated it on. Do not send your private key to anyone, as that can compromise the security of your certificate. If you lose your private key, you will be unable to install your SSL certificate and will need to generate a new key pair (CSR + Private Key) and re-issue the certificate.
Andernfalls müsste ich ja die privkey.pem in meinem Client-Setup ausliefern. Ich glaub das war nicht im Sinne des Erfinders. Bin ich da jetzt gedanklich falsch oder muss ich TIdSSLIOHandlerSocketOpenSSL nur anders konfigurieren?

Grüße
Cody

mezen 8. Dez 2020 15:06

AW: Indy 10 SSL Client ohne Private Key File
 
Wenn du dein signiertes Zertifikat als Client Zertifikat benutzt, dann brauchst du zwingend das Zertifikat zusammen mit dem privaten Schlüssel. Der Server kann an dieser Stelle das Client Zertifikat zur Validierung nutzen, damit er wirklich wirklich weiß welcher Client mit ihm redet. Das kann ein Ersatz für das Übermitteln von Zugangsdaten sein.

Wenn dein signiertes Zertifikat als Server Zertifikat benutzt wird, dann braucht der Client nur das Zertifikat. Dies dient dann der Validierung, dass er auch wirklich wirklich mit dem richtigen Server redet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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