vorhandene ssh keys in das piv applet von einem yubikey importieren

soll ein vorhandener ssh schlüssel in das piv applet von einem yubikey importiert werden,  ist es nötig das vorab die schlüssel in das pem format gebracht werden.

seit einigen versionen von ssh wird ein neues format verwendet, weshalb der private key in das alte format konvertiert werden muss.

ssh-keygen -p -N "" -m pem -f /path/to/key

private key

openssl rsa -in ~/.ssh/id_rsa -out id_rsa.pem -outform pem

public key

ssh-keygen -e -f ~/.ssh/id_rsa.pub -m PKCS8 > id_rsa.pub.pkcs8

anschließend wird der private schlüssel auf den yubi-key in den slot 9a importiert.

die option „–touch-policy“ legt fest ob der knopf auf dem yubikey gedrückt werden muss um die eingäbe zu akzeptieren.

den privaten schlüssel importieren

yubico-piv-tool -a import-key -s 9a -i id_rsa.pem --touch-policy=never

das selbstsignierte Zertifikat wird mit dem vorher konvertierten public key erstellt.

ein selbstsigniertes zertifikat erstellen

yubico-piv-tool -a verify-pin -a selfsign-certificate --valid-days 3650 -s 9a 
-S "/CN=SSH key/" -i id_rsa.pub.pkcs8 -o cert.pem

nach dem import des Zertifikats ist ist das piv-applet auf dem yubikey benutzbar.

das selbstsiegnierte zertifikat wieder importieren

yubico-piv-tool --key -a import-certificate -s 9a -i cert.pem

mit

ssh-keygen -D /usr/local/opt/opensc/lib/opensc-pkcs11.so -e

wird der public key aus dem yubikey ausgegeben welcher dann auf in die .ssh/authorized_keys auf dem remotesystem eingefügt werden kann.