我正在尝试使用笔记本电脑中的 TPM 2.0 芯片来管理新的 RSA 密钥对并在新的私钥之上创建 CSR,但是当我列出由我的 TPM 管理的证书时,我只得到了标记为公共的密钥,并且不知道如何获取我想要用于生成 CSR 的私钥的 URL。
我使用了以下步骤:
#generate rsa key:
p11tool --login --so-login --generate-rsa --bits=2048 --label=dave4 "$token"```
#list my certificates:
p11tool --list-all ""
但是,当我尝试列出所有证书时,它们所获得的 URL 都被标记为公开:
pkcs11:model=NPCT75x;manufacturer=Nuvoton;serial=0000000000000000;token=dave4;id=%34%39%30%66%65%35%65%34%30%30%34%64%65%33%65%30;object=myfirstkey;type=public
并且列出私钥不返回任何对象:
p11tool --list-privkeys pkcs11:model=NPCT75x;manufacturer=Nuvoton;serial=0000000000000000;token=dave4
No matching objects found
您是否知道如何获取私钥 URL 列表或其他方法如何生成新的 rsa 密钥对以便随后创建 CSR?
谢谢。
答案1
通常这些对象是用 CKA_PRIVATE 属性创建的,表示它们在正常列表中是隐藏的——您必须指定--login
并提供令牌 PIN 才能查看它们。
p11tool --login --list-privkeys 'pkcs11:model=NPCT75x;manufacturer=Nuvoton;token=dave4'
但是如果 PKCS#11 模块存储了私钥,那么公钥和私钥部分的 URI 几乎总是具有完全相同的id=
,因此您可以手动编辑 URI。私钥可能具有不同的object=
标签(因此删除该参数),并且它当然会具有type=private
。
例如,这应该是一个有效的 URL:
pkcs11:model=NPCT75x;manufacturer=Nuvoton;serial=0000000000000000;token=dave4;id=%34%39%30%66%65%35%65%34%30%30%34%64%65%33%65%30;object=myfirstkey;type=private
甚至:
pkcs11:model=NPCT75x;token=dave4;id=%34%39%30%66%65%35%65%34%30%30%34%64%65%33%65%30;type=private
pkcs11:model=NPCT75x;token=dave4;object=myfirstkey;type=private
注意tpm-pkcs11还远未完成。最近有很多与 API 相关的错误修复(其中一些昨天就合并了)。