RSAPrivateKey を HSM にラップして、キーのアーカイブのために Microsoft CA に送信できるようにする必要がありますが、どのようなアプローチを取るべきかわかりません。
問題は、Microsoft RSA キー形式が独自のものであり、pkcs11 または私の会社が使用する nCipher HSM でサポートされていないように見えることです。
http://msdn.microsoft.com/en-us/library/cc250013.aspx
これが単なる RSAPrivateKey である場合、HSM でキー ペアを生成し、HSM にラッピング キーをロードし、RSAPrivateKey をラップして、ラップされたキー バイトを抽出するのは簡単です。明らかに、このキー BLOB 形式はサポートされていないため、別のアプローチを取る必要があります。
私が最初に考えたのは、RSAPrivateKey を拡張し、getEncoded() メソッドをオーバーライドして、この独自のキー形式を返すことでした。Java で高レベル API を pkcs11 に提供する IAIK pkcs11 ラッパーを使用しており、ベンダー定義のキー タイプの作成がサポートされています。ただし、ベンダー定義のキーのインターフェイスは、クライアント コードで組み込みのキー タイプを拡張するための利便性としてのみ存在するようであり、実際には HSM 内のキー エンコーディングを変更することはできません。
2 番目のアイデアは、pkcs11 データ オブジェクトを使用し、単純にそれをキー blob として扱い、それをラッピング キーで暗号化することでした。ここでの同じ問題は、秘密鍵のバイトをデータ オブジェクトにコピーするために、秘密鍵のバイトをアプリケーション コードに抽出し、そこからデータ オブジェクトを作成する必要があるように思われることです。 HSM のキー。
これらのアプローチに代わるものを探していますか、それとも pkcs11 に見落としていた機能があり、これが可能になるのでしょうか? 任意の洞察をいただければ幸いです。