Mit dem Yubikey im Smartcard-Mode (PIV) authentifizieren

Mit dem Yubikey im Smartcard-Mode (PIV) authentifizieren

Der Artikel beschreibt wie man einen Yubikey unter Windows einrichtet um sich gegen SSH, GIT und Webseiten (Client-Zertifikat) sicher zu authentifizieren.

Voraussetzungen

NOTE: Please make sure Allow ECC certificates to be used for logon and authentication in Group Policy Editor (gpedit.msc) > Computer Configuration > Administrative Templates > Windows Components > Smart Card is enabled.

SSH/GIT Key Auth

  • Schlüssel einrichten:
"C:\Program Files\Yubico\YubiKey Manager\ykman.exe" piv keys generate \
  --algorithm ECCP384 --format PEM --pin-policy ONCE --touch-policy CACHED 9a \
  "%UserProfile%\Desktop\yubikey_ssh_pub.pem"

"C:\Program Files\Yubico\YubiKey Manager\ykman.exe" piv certificates generate \
  --valid-days 3650 --subject "Yubikey 851 SSH Key" 9a "%UserProfile%\Desktop\yubikey_ssh_pub.pem"
  • “Show Public Keys” in WinCryptSSH Agent: Public Key in ~/.ssh/authorized_keys auf dem Server / in Gitlab hinterlegen.

  • Test:

ssh -I "C:\Program Files\Yubico\Yubico PIV Tool\bin\libykcs11.dll" git@gitlab.com
Welcome to GitLab, @jowi24!
Connection to gitlab.com closed.
  • Umgebungsvariablen setzen:

    • set SSH_AUTH_SOCK=\\.\pipe\openssh-ssh-agent (siehe Agent -> Show WinSSH settings)
    • set GIT_ssh=C:\ProgramData\chocolatey\bin\PLINK.EXE (Achtung: keine Anführungszeichen setzen!)
  • Test:

    • Cmd ssh ✔️
    • Cmd git ✔️
    • VsCode git ✔️
    • Fork git ✔️

Client Cert Browser

  • Schlüssel einrichten:
"C:\Program Files\Yubico\YubiKey Manager\ykman.exe" piv keys generate \
  --algorithm ECCP384 --format PEM --pin-policy ONCE --touch-policy NEVER 9e \
  "%UserProfile%\Desktop\yubikey_cc_pub.pem"

"C:\Program Files\Yubico\YubiKey Manager\ykman.exe" piv certificates generate \
  --valid-days 3650 --subject "Yubikey 851 Client Cert" 9e "%UserProfile%\Desktop\yubikey_cc_pub.pem"

"C:\Program Files\Yubico\YubiKey Manager\ykman.exe" piv certificates export 9e \
  "%UserProfile%\Desktop\yubikey_cc.crt"