Nachdem ich ein Upgrade eines Servers durchgeführt habe musste ich schmerzlich feststellen, dass OpenSSH 8.2 kein rsa
mehr unterstützt und deshalb kein Login per ssh
möglich war.
Dazu gab es den Logeintrag:
userauth_pubkey: certificate signature algorithm ssh-rsa: signature algorithm not supported
Von daher habe ich mich spontan entschlossen meine SSH-CA Infrastruktur auf ed25519
zu ändern.
Wie man grundsätzlich eine SSH-CA erstellt wurde bereits im Artikel SSH Keys beschrieben und ich zeige hier nur die für ed25519
abgewandelten Befehle.
Erstellung der CA
Zuerst legen wir die Zertifikate der CA, mit welchen die Schlüssel später signiert werden, an:
ssh-keygen -C CA -f ca -o -a 500 -t ed25519
-o
legt die Dateien nicht als PEM Format ab, sondern verwendet das OpenSSH Format
-a
gibt die Anzahl der KDF (Key Derivation Function)
Runden/Durchläufe an für die Verifikation des Passwortes zum entschlüsseln des Zertifikates
-t
gibt den Algorithmus an, welcher verwendet werden soll
-f
ist der Dateiname
-C
ein beliebiger Kommentar
Hierbei sollte ein starkes Passwort eingegeben werden!
Ein Blick in die ca.pub
sollte wie folgt aussehen:
$ cat ca.pub
ssh-ed25519 AAAAC3NzbZwjNNNjjwlqdnwnern211CqZz2hw1b9o6HnCpQzB+Wjrcq1X0opoo CA
Erstellen eine SSH-Keys
Genau auf die gleiche Weise erstellen wir uns auch entsprechende SSH-Keys, welche dann im Anschluss signiert werden.
ssh-keygen -o -a 200 -t ed25519 -f ~/.ssh/id_ed25519 -C "info@techgoat.net"
Signieren der Schlüssel
Das signieren ist weiterhin identisch und da braucht eigentlich nichts weiter beachtet werden.
Beispiel:
$ ssh-keygen -s ca -I rasputin -n root -z 1 /home/rasputin/.ssh/id_ed25519.pub
Enter passphrase:
Signed user key /home/rasputin/.ssh/id_ed25519-cert.pub: id "rasputin" serial 1 for root valid forever
Und um das noch einmal zu überprüfen:
$ ssh-keygen -Lf /home/rasputin/.ssh/id_ed25519-cert.pub
/home/rasputin/.ssh/id_ed25519-cert.pub:
Type: ssh-ed25519-cert-v01@openssh.com user certificate
Public key: ED25519-CERT SHA256:/Sl4lhvc5eR7dtkb2hgWuk0LNs6GDUoFVHdHXo4dO3I
Signing CA: ED25519 SHA256:Ej4xt6dOmcfYiArMJ5wTveulvI1FgCgKgw9Jkzb5F4I
Key ID: "rasputin"
Serial: 1
Valid: forever
Principals:
root
Critical Options: (none)
Extensions: