Wie kann ich meine eigene Zertifizierungsstelle (CA) sein und SSH-Schlüssel für meine Clientcomputer generieren?

Wie kann ich meine eigene Zertifizierungsstelle (CA) sein und SSH-Schlüssel für meine Clientcomputer generieren?

Ich habe viele Tutorials darüber gesehen, wie Sie Ihre eigene Zertifizierungsstelle (CA) sein können. Die Tutorials, die ich gesehen habe, handeln davon, wie man SSL-Schlüssel generiert, nicht SSH-Schlüssel. Daher habe ich mich gefragt, wie ich solche SSH-Schlüssel in Ubuntu Server 14.04 LTS generieren kann. Der Grund, warum ich es auf diese Weise machen möchte, ist, dass ich die SSH-Schlüssel besser verwalten und sie widerrufen kann, wenn sie das Unternehmen verlassen, sodass sie nicht mehr auf diesen Server zugreifen können.

Antwort1

Das geht nicht. SSH prüft nicht anhand einer CRL oder ähnlichem, ob ein Schlüssel noch gültig ist. Wenn Sie Personen, die Ihren Shop verlassen, problemlos den Zugriff auf Server entziehen möchten, fallen mir zwei Möglichkeiten ein:

  1. Verwalten Sie die Schlüssel nicht direkt, sondern über etwas wie Puppet (dies bietet direkte Unterstützung für das Hinzufügen und Entfernen einzelner Schlüssel zu/aus einer authorized_keysDatei). Auf diese Weise müssen Sie SSH-Schlüssel nur an einer Stelle hinzufügen oder entfernen, und Puppet stellt sicher, dass die Änderungen auf allen Ihren Hosts aktiviert werden.
  2. Deaktivieren Sie PubKeyAuthenticationes vollständig und wechseln Sie zur Authentifizierung zu etwas anderem, das über ein zentrales Authentifizierungssystem verfügt (Kerberos ermöglicht beispielsweise eine kennwortlose Authentifizierung und verfügt über eine zentrale Authentifizierungsdatenbank, die Einrichtung ist für Uneingeweihte jedoch etwas kompliziert).

Antwort2

OpenSSH verfügt seit Version 5.4 über eigene Zertifikate. Diese sind im Aufbau einfacher als X509-Zertifikate, haben aber eine ähnliche Funktionalität.

Sie erstellen ein reguläres SSH-Schlüsselpaar und verwenden es als CA. Vorzugsweise eine Host-CA und eine Benutzer-CA. Anschließend können Sie mit dieser CA öffentliche Schlüssel mit ssh-keygen signieren. Zum Beispiel

ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub

Dieser Befehl erstellt eine Datei namens user_key-cert.pub, die nun Ihr Zertifikat ist. Das Zertifikat ist 53 Wochen lang gültig und kann verwendet werden, um sich als Principal1 und Principal2 bei jedem Host anzumelden, der der Zertifizierungsstelle vertraut, die den Schlüssel signiert hat.

Um sshd anzuweisen, dieser Zertifizierungsstelle zu vertrauen, verweisen Sie einfach auf ca_key.pub in sshd_config wie folgt

TrustedUserCAKeys /etc/ssh/ca_key.pub

Es gibt auch mehrere Möglichkeiten, SSH-Zertifikate zu widerrufen (Ihre eigentliche Frage), und diese werden in den Handbüchern von OpenSSH beschrieben. Die grundlegende Option in sshd_config ist jedoch RevokedKeys. Sie können hierfür sowohl Textdateien als auch binäre KRLs verwenden.

Für weitere Informationen habe ich ein paar Leitfäden über SSH-CAs geschrieben https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/

Für eine feinere und skalierbarere Zugriffskontrolle schauen Sie sich bitte an: https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/

verwandte Informationen