如何使用 Linux 管理 TPM2 中的 RSA 金鑰對

如何使用 Linux 管理 TPM2 中的 RSA 金鑰對

我正在嘗試在筆記型電腦中使用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 相關的錯誤修復(其中一些實際上是昨天合併的)。

相關內容