Berechtigungen für SSL-Schlüssel?

15

Ich versuche, eine sichere Verbindung (https) in Nginx einzurichten.

Aber ich mache mir ein bisschen Sorgen um die Berechtigungen des privaten Schlüssels, die in keinem Tutorial erwähnt werden.

Soll ich sie ändern? Zu was?

ChocoDeveloper
quelle

Antworten:

15

Bei privaten Schlüsseln sollte das Lesen stark eingeschränkt sein. Das Festlegen von Berechtigungen für 600und im Besitz von rootsollte funktionieren. Es gibt jedoch andere Einstellungen für sichere Berechtigungen - Ubuntu speichert Schlüssel in einem Verzeichnis mit Eigentümern, rootGruppen ssl-certund Berechtigungen 710. Dies bedeutet, dass nur Mitglieder von ssl-certauf Dateien in diesem Verzeichnis zugreifen können. Private Schlüssel haben dann Gruppen- ssl-cert, Eigentümer- rootund Berechtigungsrechte 640.

cpast
quelle
2
Ich füge aus Gründen der Besonderheit hinzu: Wenn Sie Nginx unter CentOS 7 verwenden, ist es nicht erforderlich, das Zertifikat oder den privaten Schlüssel für die Mitglieder der nginxGruppe lesbar zu machen . Der Webserver kann sie auch dann verwenden, wenn sie nur von root(wie sie sein sollten) lesbar sind .
3

Ich hatte ein Problem beim Einrichten von Nginx und bin auf diese Frage gestoßen. Die andere Antwort hier hat die Frage bereits direkt beantwortet, aber ich dachte, ein bisschen mehr Information wäre hilfreich.

Normalerweise wird nginx als rootBenutzer von init scripts / systemd gestartet . Nginx bietet jedoch auch die Möglichkeit, für den normalen Betrieb auf einen weniger privilegierten Benutzer zu wechseln. Meine Frage war also, welcher Benutzer verwendet wird, um das SSL-Zertifikat / den SSL-Schlüssel zu laden? Der erste privilegierte Benutzer oder derjenige, zu dem gewechselt wird?

Glücklicherweise verwendet nginx die anfänglichen Berechtigungen, um das Zertifikat und den Schlüssel in den Speicher zu lesen, bevor Benutzer gewechselt werden. Normalerweise können Sie also die Schlüssel mit sehr eingeschränkten Berechtigungen belassen, da sie von Nginx geladen werden, wenn es noch als ausgeführt wird root.


Das Problem, auf das ich stieß, war, dass ich ssl_certificatenur in meinen serverBlöcken definierte nginx.conf. Ich bekam Fehler, [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingals ich verdammt gut wusste, dass meine Schlüssel am richtigen Ort waren. Das Problem war, dass ich kein ssl_certificateauf dem httpNiveau von hatte nginx.conf.

Hoffe das ist hilfreich für jemanden.

Cameron Tacklind
quelle