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