ssh-Zertifikate mit einer CA signieren
1. CA-Zertifikat erstellen:
ssh-keygen -C CA -f ca -t ed25519
2. Host-Zertifikat erstellen:
ssh-keygen -t ed25519 /etc/ssh/ssh_host_ed25519_key
3. Host-Zertifikat signieren:
export FQDN=xxx.lan.suhle.de export HOSTNAME=xxx ssh-keygen -s ca -h -n ${FQDN},${HOSTNAME} -I ${FQDN}-host-key /etc/ssh/ssh_host_ed25519_key
Hierdurch wird ein Zertifikat /etc/ssh/ssh_host_ed25519_key-cert.pub erstellt.
4. Das signierte Zertifikat als Host-Zertifikat nutzen:
echo "HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub" >> /etc/ssh/sshd_config
5. Öffentliches Host-Zertifikat eines beliebigen Hosts in den CA-Ordner kopieren:
scp host:/etc/ssh/ssh_host_ed25519_key.pub ./
6. Öffentliches Host-Zertifikat dieses Hosts signieren:
export FQDN=host.lan.suhle.de export HOSTNAME=host ssh-keygen -s ca -I ${FQDN}-host-key -h -n ${FQDN},${HOSTNAME} ./ssh_host_ed25519_key.pub
7. Das signierte Host-Zertifikat nutzen:
ssh -l root host 'echo "HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub" >> /etc/ssh/sshd_config' ssh -l root host 'systemctl restart sshd'
8. Die CA systemweit bekannt machen:
echo "@cert-authority *.lan.suhle.de $(cat ca.pub)" >> /etc/ssh/ssh_known_hosts
9. Die CA im Host systemweit bekannt machen:
scp /etc/ssh/ssh_known_hosts root@host:/etc/ssh/ssh_known_hosts
10. User Zertifikat signieren:
ssh-keygen -s ca -n <user1,user2,...> -I <user1@example.org> id_ed25519.pub
11. CA Public Key auf den Host übertragen:
scp ./ca.pub host:/etc/ssh/ca.pub
12. Dem sshd bekannt geben:
ssh -l root host 'echo "TrustedUserCAKeys /etc/ssh/ca.pub" >> /etc/ssh/sshd_config' ssh -l root host 'systemctl restart sshd'