Einweg-SSL mit Curl

Einweg-SSL mit Curl

Ich weiß, dass es dazu bereits viele Themen und Artikel gibt, aber bei diesem hier komme ich wirklich nicht weiter.

-kIch habe eine NodeJS-Instanz, die auf TLS läuft. Ich brauche einen anderen Server, um mich mit cURL damit zu verbinden. Leider ist dies aufgrund von Einschränkungen der von mir verwendeten cURL-Version nicht möglich .

Daher darf es beim Verbinden keine Zertifikatswarnungen geben.

Meine Gedanken sind folgende:

1. to generate a cert 
2. generate a certificate signing request
3. acquire the CA
4. sign the certificate with the CA
5. Configure NodeJS to send the CA, Cert, and Key during handshakes
6. Have the requesting server do a cURL command, specifying the certificate in the command.

Ergibt das irgendeinen Sinn oder ist das falsch? Ich habe große Schwierigkeiten, die einzelnen Teile voneinander zu unterscheiden.

Danke,

Bearbeiten

Den Antworten zufolge habe ich also offenbar keine Ahnung, was ich tue. Wenn ich eine Kopie der CA-, öffentlichen und privaten Schlüssel erhalten könnte. Wie würde ich dann vorgehen? Bitte seien Sie ausführlich.

Antwort1

Aufgrund von Einschränkungen der von mir verwendeten cURL-Version kann ich leider kein -k ausführen.

Das ist von vornherein der falsche Ansatz. -kEs deaktiviert jegliche Validierung des Server-Zertifikats und erleichtert dadurch Man-In-The-Middle-Angriffe, ermöglicht also genau das, was https eigentlich verhindern soll.

  1. Konfigurieren Sie NodeJS fürSenden Sie die Zertifizierungsstelle, das Zertifikat und den Schlüssel während des Handshakes.
  2. Lassen Sie den anfordernden Server einen cURL-Befehl ausführen.Angabe des Zertifikats im Befehl.

Ich bin nicht ganz sicher, was Sie hier erreichen möchten, aber wenn ich Sie richtig verstehe, möchten Sie serverseitig ein Zertifikat generieren und dieses Zertifikat dann an den Client senden, damit dieser in Zukunft mit diesem Zertifikat prüft.

Das Problem bei diesem Ansatz besteht darin, dass Sie das Senden des neu erstellten Zertifikats vom Server an den Client schützen müssen. Andernfalls könnte ein Man-in-the-Middle-Angriff das Zertifikat einfach gegen ein vom Angreifer erstelltes austauschen und so weiterhin unentdeckte Man-in-the-Middle-Angriffe durchführen.

Leider beschreibt Ihre Frage den Versuch, ein unbekanntes Problem zu lösen (sieheXY-Problem). Die übliche Vorgehensweise bei SSL besteht darin, eine Zertifizierungsstelle (CA) zu haben, der der Client bereits vertraut, und ein von dieser CA ausgestelltes Zertifikat zu verwenden. In den meisten Fällen wird hierfür eine öffentliche CA wie Let's Encrypt verwendet, da diese CA bereits vom Client als vertrauenswürdig eingestuft wird (wird mit dem Betriebssystem oder Browser mitgeliefert). In Ihrer Frage gibt es keine Erklärung, warum Sie diesen etablierten Weg nicht gehen können und stattdessen Ihre eigene Lösung erfinden müssen.

verwandte Informationen