设置模式

计划只使用 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认证

参考资料