我尝试在 Linux 上使用 Yubkey 和 openssl 加密文件。我的 YubiKey 是一个
idProduct 0x0407 Yubikey 4/5 OTP+U2F+CCID
bcdDevice 5.24
首先我从我的 yubikey 中提取我的公钥:
pkcs15-tool --read-public-key 01 -o pubkey
我得到一个内容如下的文件:
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZ[...]WpqK
qezLU6KBlk9[...]eRDFZEkvptllFFkw==
-----END PUBLIC KEY-----
当我尝试使用此公钥加密文件时出现错误:
openssl pkeyutl -encrypt -pubin -inkey pubkey -in file -out file.enc
pkeyutl: Error initializing context
40A7F0A3DA720000:error:03000096:digital envelope routines:evp_pkey_asym_cipher_init:operation not supported for this keytype:../crypto/evp/asymcipher.c:189:
我最近换了一个 yubikey。之前我有一个 epass2000,也是这样用的。我在网上找不到任何关于 yubikey 的正确文档。
如何使用 openssl 和 yubikey 加密文件?
看起来你在 YubiKey 上存储的密钥不支持加密。
例如,EC 密钥与 ECDSA 一起使用,但该算法只能用于生成/验证数字签名,而不能用于加密/解密。
检查
pkcs15-tool --list-public-keys
Yubikey 上存储了哪些密钥。如果 ID 为 01 的密钥是“公共 EC 密钥”,则您无法使用它进行加密。改用带有 RSA 密钥的插槽。