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
- Install YubiKey Smart Card Minidriver
- Install WinCrypt SSH Agent
choco install wincrypt-sshagent
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"
-
Zertifkat in
yubikey_cc.crt
auf dem Server hinterlegen, siehe dazu auch der Artikel über Client Zertifikatsprüfung auf dem Server -
Test
- Microsoft Edge ✔️
- Chrome ✔️
- Firefox ⚠️ Krypto Modul muss installiert werden??
- iPhone/Safari ❓ TODO