Under Construction

SSH Host-Zertifizierungsstelle

Eine Host-Zertifizierungsstelle oder Host CA ist einfach ein SSH Key-Paar das zum Erstellen von SSH Host-Zertifikaten verwendet wird. Der Private-Key wird dabei zum Signieren von Host-Keys verwendet und der Public-Key wird für die Authentifizierung von Hosts verwendet. Im Prinzip kann dieses Key-Paar auf jedem beliebigen Rechner erzeugt und verwendet werden. Da aber die Sicherheit aller erstellten Zertifikate von der Sicherheit dieser Zertifizierungsstelle abhängen, sollte ein besonders sicherer Rechner ausgewählt werden. In unseren Beispielen ist dies der Rechner mit dem Namen ca-host.

Das SSH Key-Paar für die Host-Zertifizierungsstelle kann mit dem Kommando ssh-keygen erzeugt werden. Als Key-Typ haben wir ed25519 ausgewählt, da dieser als sehr sicher gilt. Der Name für die Keys muss angegeben werden, wir haben uns für  ssh_host_ca_key entschieden, da der Name sehr gut den Zweck der Keys repräsentiert. Diesen verwenden wir auch für den optionalen Kommentar. Das Key-Paar sollte an einer Stelle abgelegt werden, die nur von einem eingeschränkten Kreis von Nutzern zugänglich ist. Im nachfolgenden Beispiel haben wir unter /etc/security das Verzeichnis ssh-ca für die Keys angelegt. Unter AIX kann auf diese Verzeichnis nur root und Mitglieder der Gruppe security zugreifen.

root@ca-host # mkdir /etc/security/ssh-ca
root@ca-host # ssh-keygen -t ed25519 -C ssh_host_ca_key -f /etc/security/ssh-ca/ssh_host_ca_key
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): XXXXXXXXXX
Enter same passphrase again: XXXXXXXXXX
Your identification has been saved in /etc/security/ssh-ca/ssh_host_ca_key
Your public key has been saved in /etc/security/ssh-ca/ssh_host_ca_key.pub
The key fingerprint is:
SHA256:Yr22UVk95ilCGBTki8QP7BT16IBqW9PhoOY3JG/OeyA ssh_host_ca_key
The key's randomart image is:
+--[ED25519 256]--+
|      .+*.       |
|     + o =   .   |
|    o O + o . +  |
|   o B O o o o o |
|  * + B S + . o  |
| +E*.o . o . .   |
|  o.=.  +        |
|   = ... o       |
|    +o  .        |
+----[SHA256]-----+
root@ca-host #

Hinweis: Es sollte auf jeden Fall ein Passphrase angegeben werden, ansonsten kann jeder, der Zugriff auf den Private-Key hat, beliebig Host-Keys signieren.

Es wird ein Private-Key (ssh_host_ca_key) und ein zugehöriger Public-Key (ssh_host_ca_key.pub) erzeugt:

root@ca-host # ls -l /etc/security/ssh-ca               
total 16
-rw-------    1 root     system          464 Jan 12 17:14 ssh_host_ca_key
-rw-r--r--    1 root     system           97 Jan 12 17:14 ssh_host_ca_key.pub
root@ca-host #

Damit ist die SSH Host-Zertifizierungsstelle einsatzbereit.

Da der Public-Key öffentlich ist und daher auf vielen Systemen benötigt wird, der Zugriff so aber nur für root möglich ist, erzeugen wir noch ein weiteres Unterverzeichnis /etc/ssh-ca für den Public-Key und Verschieben diesen dann in dieses allgemein zugängliche Verzeichnis:

root@ca-host # mkdir /etc/ssh-ca
root@ca-host # chmod 755 /etc/ssh-ca
root@ca-host # mv /etc/security/ssh-ca/ssh_host_ca_key /etc/ssh-ca
root@ca-host # ls -l /etc/ssh-ca               
total 16
-rw-r--r--    1 root     system           97 Jan 12 17:14 ssh_host_ca_key.pub
root@ca-host #

Dies vereinfacht den Zugriff auf den Public-Key der Host-Zertifizierungsstelle deutlich.