Frage

ich eine Anwendung am Bau, und ich plane OpenSSL zur Verwendung für Datenübertragungen zu sichern.

Ich plane, nur der Client das Zertifikat des Servers validieren zu müssen. Ich bin verwirrt, wie ich sollte das Zertifikat des Servers sichern. Ich möchte das Zertifikat des Servers mit dem privaten Schlüssel verschlüsseln, aber ich will keine hart codierte Schlüssel für diese Verschlüsselung verwenden.

Was sind einige der häufigsten Praktiken von Anwendungen gefolgt unter Verwendung von SSL?

War es hilfreich?

Lösung

Nur um sicherzustellen, dass wir unsere Terminologie gerade haben, wird ein „SSL-Zertifikat“ im allgemeinen Sprachgebrauch wirklich aus zwei Komponenten zusammen:

  • Ein öffentliches Zertifikat
  • Ein privater Schlüssel

Die öffentliche Zertifikat Komponente wird von den gewählten CA (Certificate Authority) unterzeichnet, wonach sie frei verteilt werden. Es muss nicht gesichert werden oder verschlüsselt, und in der Tat wird es den Kunden gesendet werden, die auf dem Server als Teil der SSL-Verhandlung zu verbinden.

Die private Schlüsselkomponente soll geschützt werden. In der Mehrzahl der Fälle wird dies einfach als eine verschlüsselte Datei auf dem Server gespeichert. Upscale Lösungen verwenden dedizierte „manipulationssicher“ Krypto-Hardware (HSMs - Hardware-Sicherheitsmodule), um den privaten Schlüssel zu speichern. Dies reicht von der Smart-Card-basierten Lösungen für Multi-Taste, ermöglichte Netzwerk-Appliances mit m / n Kontrollen etc etc. Es gibt Risiken (nicht zu erwähnen Kosten) im Zusammenhang mit HSMs, die ich hier nicht näher eingehen.

Viele Anwendungen einfach die privaten Schlüssel auf der Festplatte behalten. Es gibt ein paar Optionen, um die Schlüsseldatei zu sichern:

  • Verlassen Sie sich auf System- und Dateiberechtigungen Sicherheit (dh nicht verschlüsselt private Schlüssel). Zum Beispiel haben die meisten SSH-Daemons dies.
  • Verwenden Sie, was Mechanismus der Server die Datei zu verschlüsseln bietet - Passwort-geschützte Verschlüsselung ist eine Standardfunktion in den meisten Web-Servern. (Wenn Sie Ihre eigene mit dem OpenSSL API Walzen, eines der offensichtlichen nativen Schlüsselformate wählen).

Wie immer gibt es ein Sicherheits Kompromiss. wenn Sie kennwortgeschützte Verschlüsselung auf dem privaten Schlüssel verwenden Insbesondere und Sie erleben einen unerwarteten Neustart der Anwendung (zB Stromausfall), dann wird jemand müssen verfügbar sein, das Passwort zu der App zur Verfügung zu stellen, wie es neu gestartet wird. Speichern des Passworts in einer Datei, die durch das System Initialisierungsskripts gelesen wird (wie durch mindestens zwei Web-Server-Anbieter ermutigt) fügt in Bezug auf die wirkliche Sicherheit wenig. Es ist schwer zu empfehlen, die private Schlüsseldatei unverschlüsselt verlassen, aber wenn Sie die einzige admin / techy in einem kleinen Geschäft sind, sollten Sie auf jeden Fall überlegen, was passieren könnte, wenn der Server neu gestartet wird, wenn Sie nicht verfügbar sind, und was die Kosten könnten für Ihr Unternehmen sein .

Andere Tipps

nicht ganz sicher, was Sie zu fragen, versuchen. das Server-Zertifikat wird an Sie gesendet, der Kunden; Sie bestätigen das CERT durch seine Signaturprüfung (SHA-1 nicht MD5, MD5 geknackt wurde.) Der Schlüssel, den Sie von der CA haben, ist die öffentliche Seite; der CA und der Server cert Inhaber halten ihre privaten Schlüssel zu sich. Sie können das Zertifikat validieren, weil der öffentliche Schlüssel genug ist decrypt eine Nachricht, die gewesen sind verschlüsselt mit dem privaten Schlüssel. Sie müssen also keine Sorge, auf der zient Seite, über das CERT überhaupt verschlüsselt zu halten.

Haben Sie einen Blick auf die Wikipedia-Artikel über SSL / TLS .

  

Ich bin verwirrt, wie ich sollte das Zertifikat des Servers sichern.

Sie müssen nicht das Zertifikat des Servers sichern. Es ist ein öffentliches Dokument

  

Ich mag das Zertifikat des Servers mit dem privaten Schlüssel verschlüsseln

Das Zertifikat des Servers nicht die privaten Schlüssel enthält.

  

, aber ich will keine hart codierte Schlüssel für diese Verschlüsselung verwenden.

Sie brauchen keine Verschlüsselung zu tun. Der einzige Server Asset müssen Sie schützen, ist mit seinem privaten Schlüssel, der von seinem Zertifikat völlig verschieden ist. Im Fall von OpenSSL kann es auch eine andere Datei sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top