设置模式
计划只使用 PIV 模式,可以在 yubikey manager 中关闭其他模式。
ykman config mode CCID
启动 pcscd
必须启动 pcscd 否则 yubico-piv-tool 无法发现设备
#systemd
systemctl start pcscd
#openRC
/etc/init.d/pcscd
#other
/usr/sbin/pcscd &
生成ECDSA密钥
openssl ecparam -out ca.key -name secp384r1 -genkey
openssl ec -in ec-secp256k1-priv-key.pem -pubout > secp256k1-pub.pem
生成 RSA 密钥
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
导入 yubikey
在以下例子中,将私钥导入 9a 插槽中。关于插槽介绍可以看 官方 的这篇文章。
yubico-piv-tool -s 9a -a import-key -i private.pem
依照 PIV 的標準,Yubikey 只能存入 X.509 憑證,而不能單純儲存公鑰。因此這邊得用我們剛才產生的私鑰,製作一份自我簽核 (self-signed) 的憑證:
$ yubico-piv-tool -a verify-pin -a selfsign-certificate -s 9a -S "/CN=SSH KEY/" -i public.pem -o cert.pem
设置 SSH key
pkcs15-tool --list-public-key #列出所有的公钥
pkcs15-tool --read-ssh-key 01 #输出为ssh格式
ssh -I /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so syyang@foo.bar #使用PIV进行SSH认证