はじめに
Windows11(23H2)の話です。pkcs#12形式のクライアント証明書+秘密鍵をTPMにインポートしてみようと思ったのですが,どうもうまくいきません。未来の自分のための作業記録です。
試した手順
- オレオレ認証局を立てて,クライアント用の秘密鍵ファイルと証明書を作る
手順は以下を参考にしました。ubuntu2004用の手順ですが,2204でも同じ手順です。
- PKCS#12ファイルを作る
秘密鍵ファイルとcrtファイルから,pkcs#12ファイルを作成します。手順は以下を参考にしました。出力ファイルはclient.p12にしました(拡張子がpfxではないですが気にしないでください)
-
Windows11にコピーする
client.p12をscpコマンドなどで物理Windows11(TPM2.0入り)にコピーします。
(ちなみに,proxmox上に仮想TPM付きでインストールしたWindows11も結果は同じでした) -
pkcs#12をインポートする
ユーザ権限でWindowsTerminalを起動し,以下のコマンドでインポートします。
PS C:\Users\***> certutil -user -csp TPM -p Password! -importPFX .\client.p12 NoExport
証明書 "client" がストアに追加されました。
CertUtil: -importPFX コマンドは正常に完了しました。
"-csp TPM"がTPM指定のオプション(のはず・・・)です。
結果
管理者権限で certutil -TPMInfo を実行してみましたが,それらしき証明書はTPMの中には見当たりません。
他にも困っている人がいた?
ここのREADMEを見ると,やはりインポートができないようです。私と違って明確なエラーで失敗していました。ただこの方のすごいところは,TPMにインポートするためのコードを書いていらっしゃることです。すごい。
参考コマンド
CSP一覧を表示する。certutil -csplist
注意事項
certutilコマンドは実運用で非推奨だそうです。公式に注意事項として記載がありました。